天天看點

Wix打包系列(二)使用者界面和本地化操作

    上一章節,我們已經大概知道如何對檔案進行打包安裝,不過我們也注意到,通過對Sample.wxs的編譯連結,生成的msi安裝包沒有任何使用者界面,隻有一個安裝進度條。下面我們來看看如何給安裝包添加使用者界面:

    2.1   使用wix使用者界面

    wix本身自帶有一套UI,使用這些UI我們可以滿足大多數的安裝界面要求,你可以決定到底使用哪種WixUI:

    1、WixUI_Mondo 包含WixUI附帶的全部使用者界面:welcome界面,許可協定,安裝類型(經典、自定義、完全),部件定制(安裝類型自定義),浏覽目标目錄,磁盤消耗,同時也包含維護模式的界面;

    2、WixUI_FeatureTree 與WixUI_Mondo的差別就是不能選擇安裝類型,許可協定界面之後直接到了部件定制界面;

    3、WixUI_InstallDir 不會出現選擇安裝類型和自定義部件的界面,許可協定之後會進入到選擇安裝目錄界面

    4、WixUI_Minimal 簡化的安裝界面,在歡迎和許可協定後會自動安裝,不能自定義部件和安裝路徑

    5、WixUI_Advanced  跟WixUI_Minimal 相似,可以一鍵直接安裝,也允許定義部件和安裝路徑

    要在安裝程式中應用WixUI需要進行如下配置,首先在源檔案Sample.wxs中添加UI的引用,UIRef标記可以放到Product或Fragment标簽下:

WixUI_Mondo 是使用者界面的引用,WixUI_ErrorProgressText則是安裝進度文本,加上該語句後,在安裝進度界面會顯示安裝進度的文字資訊。另外還有一個FilesInUse對話框也很有用,如果安裝過程中要修改的檔案正在使用,則會挂起安裝程式,并彈出檔案正在使用的對話框,使用者可以選擇重試、忽略或者退出安裝,使用FilesInUse對話框隻需添加如下語句:

需要注意的是如果使用WixUI_InstallDir 界面,則還必須額外定義一個辨別為WIXUI_INSTALLDIR的Property。它的Value為安裝目錄的Directory的ID,這個ID必須是大寫的

所有的WixUI的資源檔案都包含在wix目錄下的WixUIExtension.dll中,是以在連結的時候需要加上-ext WixUIExtension參數:

    2.2   部件(Feature )定制

    執行生成的Sample.msi,我們就可以看到現在安裝包中已經包含使用者界面了,我們可以看看部件定制界面,也就是選擇自定義安裝時出現的界面,包括2個可選的子部件和一個父部件,這3個部件正是我們之前定義的Feature,我們來看看之前我們定義的Feature的屬性:

    Title屬性是部件樹中顯示的部件名稱;

    Description 屬性是點選部件節點時在右邊文本框中顯示的描述性文字。

    ConfigurableDirectory屬性很重要,它的值是我們之前定義的目錄的引用INSTALLDIR,如果不設定該屬性,将不能為部件選擇安裝路徑;

    Level是安裝部件的條件等級,要了解它的含義,我們還必須知道Install level的概念:

    Install level可以了解成是安裝級别的level,而Feature level 則是部件級别的level。Install level的值對應于安裝類型,在選擇安裝類型時,會對Install level指派。對于典型安裝(Typical)的Install level是3,選擇典型安裝的情況下Feature level小于等于3的Feature都将被安裝;對于完全安裝(Complete)的Install level是1000,選擇完全安裝的情況下Feature level小于等于1000的Feature都将被安裝,是以一般情況下我們定義的level不要超過1000;Feature level 設定為0部件将不會被安裝,也不會在部件定制時顯示出來。

    另外要注意的是Feature,如果我們我們在Feature下定義了Condition,則Condition的條件為true時的level值将覆寫Feature的Level值。Condition,顧名思義就是條件,wix中Condition有多種用法:可以定義在Component下,作為安裝Component的條件;定義在Control下,作為ControlCondition的入口;定義在Fragment 或者 Product下,作為運作安裝程式的入口;定義在Feature下,則作為Feature 條件的入口,如定義如下condition,則當TESTSUCCESS屬性為1時,Feature level的屬性将被重置為1000。

    2.3  本地化配置

    接着我們需要對源檔案進行如下改動:

    1、修改源檔案編碼格式為utf-8:

    2、修改Product的Codepage和Language屬性,對應中文的屬性值是Codepage="936" Language="2052"。

    3、修改Package對應  的屬性Languages和SummaryCodepage為936和2052

    然後編譯源檔案,最後在連結時需要使用-loc開關加載資源檔案,如下:

    2.4  自定義界面元素

    運作生成的安裝檔案,已經變成中文安裝界面了。到這裡我們發現,許可協定内容和界面風格都還是wix預設的,wix中這些界面元素的内容都是使用變量定義的,我們可以通過重定義變量的值來更改這些界面元素:

       這裡的Value 值是目标檔案的相對路徑,在與wxs源檔案相同的目錄下,ID的值是目标檔案的辨別,不能改變。

    到這裡我們已經可以生成一個标準的安裝界面了,後面我們還将看到如何生成自定義的安裝界面,下一章我們将讨論如何自定義Action(Custom Action)