這篇會在上篇的基礎上繼續探索Wix的自定義界面和行為的功能,以下都是個人的小結,不當之處歡迎指正,與君共勉!
一、安裝向導
Wix提供了五種安裝向導風格,
WixUI Advanced
WixUI FeatureTree
WixUI InstallDir
WixUI Minimal
WixUI Mondo
如何使用呢?需要兩步,先不問為什麼:
1.需要使用UIRef 元素 ,在Product中引入
2.再在安裝工程上右鍵添加引用,引入WixUIExtension.dll ,這個dll就在你安裝的wix的bin目錄下面。我們再生成以下,這個時候點選安裝檔案,安裝向導頁面就出現了,先是同意許可證,再是上一步,下一步等按鈕知道完成,比上一篇中的安裝明顯像樣了些。先不着急往下走,再回頭看以下
UI元素是專門用來規範安裝UI的,在其中可以定義你選擇的風格,設定自定義的行為等。UIRef 用來選擇安裝向導風格,把Id中Minmal換掉就可以了,Minmal是最簡潔的。當然不能出現兩個UIRef,不然WIx就淩亂了。
Advance和InstallDir 還需要其他的設定。
InstallDir 需要一個屬性,讓使用者定義安裝的地方。如下:
當然要記得修改
安裝的時候,就會讓使用者選擇安裝位置。

WixUIExtension.dll是wix自帶的連結庫,還有其他的連結庫如WixUtilExtension,WixNetFxExtension,WixIISExtension等,會在後面一一探索。
二、自定義風格
這裡主要講的是加入自己的文字和圖檔,預設的是帶有Wix的一些背景圖檔,正式釋出的時候,當然要換成自己産品相關的。
1.修改許可證書。許可證書需要rtf的富文本格式,我們可以用word先把内容寫好,然後檔案另存為選擇rtf格式的儲存就行了,再直接粘貼到工程目錄下。然後在Product标簽中加入以下代碼,license.rtf就是你的許可證書。再次生成,安裝的時候就在第一頁看到了。
WixVariable是wix比較先進的個功能,Value不能為空。同樣我們可以換掉圖檔及其他。WixUIDialogBmp的圖檔會出現在歡迎頁和安裝完成頁,規格是 493 × 312。
WixUIBannerBmp 的圖檔會出現正上方。規格493 × 58
還有WixUIInfoIco,WixUINewIco,WixUIUpIco,WixUIExclamationIco 來更換一些圖示。
2.定義退出頁。
ExitDlg 成功安裝後顯示,可以加入文字,複選框,讓使用者選擇是否馬上執行,我們在安裝軟體的時候經常看到這個提示。
我們先加入一條感謝語,在Product元素中插入以下内容,WIXUI_EXITDIALOGOPTIONALTEXT 專門用來展示文字。
同理加入一個複選框,用來提示使用者運作是否目前程式。
界面讓我改成這個樣子了,覺得這個背景透明度也是個問題,這個問題先記下。
但這個時候 還是不能運作的,我們再看下一節。
三、執行自定義Action
這裡小小的分開下,是因為Action是wix中的一大功能,這次先嘗下滋味。需要三步
1.先引入WixUtilExtension.dll
2.用WixShellExecTarget 和 CustomAction來定義這個行為 (在Product元素中加入)
WixShellExecTarget 是專門用來運作一個應用程式的,這裡的Value中的#号表示的是全路徑,而這個myapplication.exe是個id,指向你安裝元件的中File的id。相當于這個Property定義了要執行程式的位置。CustomAction定義了這個行為Id就是LanuchApplication,DllEntry表示是入口。深入的認識還是要到後面繼續研究。
3.在UI元素中加入Publish元素來告訴UI如何執行這個行為。
上面兩個元素完成了方法的定義,這裡的Publish就是觸發這個行為。Dialog屬性表示是哪個框(dialog),Control=“Finish” 表示是點選完成鍵觸發這個行為,Event=“DoAction” 表示點選後執行這個行為,應該還有其他的值,現在還不知道。而這個Value 正好指向了CustomAction的Id。 WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 表示要checkbox 選中後執行。于是乎,仿佛碎片的世界又聯系在了一起。這個時候,我們重新生成後,安裝一遍,選擇複選框,就能執行了。回頭想想,為什麼是這樣,wix這個相當于全部都是配置檔案,不像C#的語言那麼優雅,語義化。是以開始看起來确實有些惱火呢。了解了才能記得住,每個元素就相當于一張表,而這個Id對于每個元素來說都是唯一的,這樣通過Value和Id彼此關聯,而且生産MSI檔案其實就是個資料庫。
四、定義文字
所有安裝過程中的文字都是可以重載的, 可以通過增加一個String 指定對應的Id 就可以重載,這個可以用來做一個分離工作。需要兩步
1.需要加入localization 檔案,右鍵,添加建立項,選擇localization File . 再用String 來定義你的文字。
2.修改你的Product.wxs ,這裡的Name 後的表達式就指向localization檔案中的Id="Application" 的String。
再次安裝的時候檔案名就變成了**My Application Name,其他地方同理。這樣可以避免多次重複的修改,做到文字和配置的分離。
這一節先到這裡,今天眼睛都看花了,自定義的還不止這些,明天繼續.....
全部代碼:
View Code
還是那句話,如果對你有幫助,就頂一下吧