選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
5 分鐘閱讀時間 (919 個字)

Izpack 基本應用

angle-view-of-microsoft-surface-laptop-mockup

基本介紹

  • Java 開源專案
  • 可執行在多平台上 (Windows, linux, Unix),平台上有JDK1.4以及其後版本即可
  • XML 配置
  • 有 GUI 安裝,也可以使用 command 安裝

官方網站

基本使用

  • 下載完之後會得到 jar 檔,使用命令提示字元執行 java -jar izpack-dist-5.1.3-installer.jar 基礎安裝後會得到一包資料夾
  • bin 資料夾內放有主要編譯執行的檔案,裡面的 complie 就是主要的命令檔案
  • 使用命令提示字元執行 compile prepare.xml -o output.jar 即可生成 output.jar 的安裝包

XML 介紹

<info>….<info>

  • appname : 產品名稱
  • appversion : 產品版本
  • appsubpath : 默認的安裝路徑
    • linux 下是 /usr/local/QuEyeCIA
    • Windows 下是 C:\Program Files\QuEyeCIA
  • javaversion : JDK 版本
  • run-privileged : 權限限制
    • condition="izpack.linuxinstall"
      • linux 權限限制,必須要有 root 才可以執行
    • condition="izpack.windowsinstall"
      • Windows 權限限制,必須有 Administrators 才可執行
      • 也可以指定作業系統 izpack.windowsinstall.7, izpack.windowsinstall.vista
  • authors : 作者資訊
  • requiresjdk : 是否需要 jdk,如果為是發現沒有 JDK 會提醒並中斷流程
  • 更多資訊 https://izpack.atlassian.net/wiki/spaces/IZPACK/pages/491662/Header+-+info
 <info>
    <appname>Update_QuEyeCIA</appname>
    <appversion>v1.0.0</appversion>
    <appsubpath>QuEyeCIA</appsubpath>
    <javaversion>1.8</javaversion>
    <run-privileged condition="izpack.linuxinstall"/>
    <run-privileged condition="izpack.windowsinstall"/>
    <authors>
        <author name="Hank" email="Hank@gss.com"/>
    </authors>
    <requiresjdk>no</requiresjdk>
</info>

<local>...<local>

  • 安裝介面支援語言
<locale>
       <langpack iso3="chn" />
       <langpack iso3="eng"/>
</locale>

<panels>...<panels>

  • 安裝流程的面板
<panels>
        <!-- 打招呼的面板,並會顯示目前版本 -->
        <panel classname="HelloPanel"/>
        <!-- 輸入目標路徑的面板 -->
        <panel classname="TargetPanel"/>
        <!-- 安裝進度條的面板 -->
        <panel classname="InstallPanel"/>
        <!-- 完成的面板 -->
        <panel classname="SimpleFinishPanel"/>
</panels>

  • Hello Panel (Windows)
  • Target Panel (Windows)
  • InstallPanel (Windows)
  • SimpleFinishPanel (Windows)
  • Hello Panel (Linux)
  • Target Panel (Linux)
  • InstallPanel (Linux)
  • SimpleFinishPanel (Linux)

<logging>...<logging>

  • pattern : 檔案的檔名跟路徑
  • append : 是否複寫上去
  • level : log的Level
<logging>
    <log-file pattern="update.log" append="false" level="FINE"/>
</logging>

<dynamicvariables>…</dynamicvariables>

  • 設定動態變數 (在下面 packs 裡面有使用案例)
  • <variable>…</variable>
    • name : 變數名稱
    • value : 變數值
<dynamicvariables>
    <variable name="CATALINA_HOME_DIR" value="${INSTALL_PATH}/tomcat7" />
    <variable name="POSTGRESQL_USERNAME" value="$PostgreSqlUsername" />
</dynamicvariables>

<packs>…</packs>

<packs>…</packs>

  • <fileset>…</fileset>(多個檔案)
  • <executable>…</executable>
    • 執行檔案
    • targetfile : 目標路徑的某檔案
    • type : 類型
      • 有 bin 跟 jar
    • stage : 執行檔案的時間點
      • postinstall 為安裝完執行
      • never 永遠不會啟動
      • uninstall 解除安裝時執行
    • keep : 執行完是否留下檔案
    • failure : 發生錯誤時,該怎麼處理
      • abort 有錯誤就中斷
      • ask 會通知使用者,讓使用者決定
      • warn 只會跟使用者通知有錯誤,並繼續執行
      • ignore 不會通知使用者,且繼續執行
    • <args>…</args>
      • 外部帶入的參數
  • <parsable>…</parsable>
    • 將標記的文字解析成替代文字
    • targetfile : 目標路徑的某檔案
    • includes : 包含的檔案
<packs>
    <pack name="Backup" required="yes">
        <description>Backup</description>
        <file src="/updateSh/backup.sh" targetdir="$INSTALL_PATH" override="true"/>
        <fileset dir="QuEyeCIA/discovery-runner" targetdir="$INSTALL_DRIVE\opt\discovery-runner" override="true">
            <include name="**"/>
        </fileset>
        <executable targetfile="$INSTALL_PATH/backup.sh" type="bin" stage="postinstall" keep="false" failure="abort">
            <args>
                <arg value="POSTGRESQL_USERNAME"/>
            </args>
        </executable>
        <parsable type="at">
            <os family="windows" />
            <fileset targetdir="$INSTALL_PATH" includes="initTomcatService.bat,initPostgreSQL.bat,EncryptionContextPwd.bat" />
            <fileset targetdir="$INSTALL_PATH\tomcat7\conf" includes="context.xml"/>
        </parsable>
    </pack>
</packs>

客製化界面介紹

  • 製作客製化界面
    • 新增客製化 Xml
<izpack:userinput version="5.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:izpack="http://izpack.org/schema/userinput" xsi:schemaLocation="http://izpack.org/schema/userinput http://izpack.org/schema/5.0/izpack-userinput-5.0.xsd">
  <panel id="panel1">
    <field type="title" txt="設定 QuEyeCIA 資料庫使用者名稱與密碼" bold="true" size="1" />

    <field type="text" variable="PostgreSqlUsername">
      <spec txt="使用者名稱:" id="input.PostgreSql" size="20" set=""/>
    </field>

    <field type="password" align="left" variable="PostgreSqlPassword">
      <spec>
        <pwd txt="使用者密碼:" size="20" set=""/>
        <pwd txt="請再輸入一次密碼:" size="20" set=""/>      
      </spec>
      <validator class="com.izforge.izpack.panels.userinput.validator.PasswordEqualityValidator"
              txt="兩次輸入密碼不一致!" id="key for the error text"/>
    </field>
  </panel>
</izpack:userinput>
  • 掛入客製化界面
<resources>
    <res src="/QuEyeCIA/Windows/UserInputSpec_Win.xml" id="userInputSpec.xml"/>
</resources>
  • Panle 設定客製化界面 id 為 panle 的 id
  • 成果
<panels> <panel classname="UserInputPanel" id="panel1"/> </panels>
  • 成果

Jenkins 自動化打包安裝包

  • Jenkins 組態設定
    • 設定版號
    • 建置完成後,打包安裝包
  • Jenkins 建置
  • Jenkins 建置後續執行 buildInstaller.bat
SET version=%1

call replaceVersion.bat %version%
call compile QuEyeCIAInstaller_Win.xml -o QuEyeCIA_Installer_Win.jar
  • 建置結束後
深入淺出 Java 8 新語法特性
React Suspense
 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2024/05/07, 週二

Captcha 圖像