wix图片导入设置_奇葩史的奇葩事 | [译]:WiX Toolset入门——内置的WixUI界面使用配置...
[譯]:WiX Toolset入門——內置的WixUI界面使用配置
2016年11月8日 13:30:00
博客分類:
官方教程
使用內置WixUI對話框
WixUI對話框庫主要包含以下幾種對話框集合,它們提供了我們常見的向導式設置的用戶界面。
怎樣為產品安裝程序添加內置WixUI對話框
假設你已經有一個可用的安裝程序,僅僅缺少安裝用戶界面,參照以下步驟為其添加內置的WixUI對話框:
添加UIRef元素到安裝程序代碼中,并將其Id設置為與上述對話框設置類型列表中的一個相同的名稱。示例如下:
在鏈接器(light.exe)中,使用-ext和-cultures設置來引用WixUIExtension,示例如下:
light -ext WixUIExtension -cultures:en-us Product.wixobj -out Product.msi
注:如果你在Visual Studio中使用Wix,你可以通過添加引用的方式處理以上步驟。其步驟如下:
在Visual Studio中打開WiX項目
在解決方案管理器中右擊項目下的References,然后選擇添加引用
在列表中選擇WixUIExtension.dll,然后點擊添加
點擊確定,關閉添加引用對話框
提示
個人經驗:如果僅僅按照上面步驟處理,在安裝過程中會提示錯誤,錯誤代碼為2819;
具體處理方案見:關于使用WiXUI后遇到錯誤2819問題解決
內置的WixUI對話框配置亦是可以自定的——從UI界面圖片到添加和刪除 用戶對話框。更多內容見下節。
自定義內置WixUI對話框
內置WixUI對話框自定義設置包括以下內容:
指定特定產品的使用許可協議文件
定制產品獨有的安裝UI界面
向ExitDlg對話框中添加可選的復選框和可選文本
自定義內置對話框中的顯示文本
修改內置對話框集合的UI序列
向內置對話框集合中添加自定義對話框
指定許可文件
WixUIExtension.dll包含一個默認的使用許可協議。要指定自己產品的許可協議,則通過指定VixVariable內容來覆蓋默認協議。要指定的內容包括將WixVariable的Id設置為WixUILicenseRtf,然后在Value屬性中指定你自己的RTF文件格式的許可文件。示例如下:
或者,你可以在使用light時通過-d參數指定變量:
light -ext WixUIExtension -cultures:en-us -dWixUILicenseRtf=bobpl.rtf Product.wixobj -out Product.msi
指定的文件必須包含在目錄中,light會查詢此文件。
現有一個已知的問題:富文本控件在顯示許可文件時,可能會顯示空白,只有用戶在控件內向下滾動后才能顯示文本。此問題通常是由復雜的RTF內容導致(如在Microsoft Word保存生成的RTF文件)。如果在自己的安裝界面中遇到此問題,如下的解決方案可以解決大多數的情況:
用寫字板打開RTF文件,然后保存,與此去除復雜的RTF內容。保存之后,重新生成安裝包。 ——注:最好是另存為,如果單純的保存,可能無法保證格式真正轉化,本人使用文本轉rtf時就糾結了好久。
使用非WixUI_Minimal集合的對話框。此問題通常是因為,在安裝啟動后的第一個界面為許可協議,而它使用WixUI_Minimal對話框集合。 —— 此處處理方式,在學到此處時,可能還不知道怎么處理,需要進一步學習
替換默認安裝圖片
WixUI對話框庫中含有歡迎界面和完成界面的背景圖片,以及其他界面頂部的橫幅圖片。你用你自己的圖片替換以此推廣自己產品的品牌。要替換默認圖片,在WiX變量中指定圖片文件名稱即可,類似于指定許可文件一樣:
變量名
描述
尺寸
WixUIBannerBmp
頂部橫幅
493*58
WixUIDialogBmp
歡迎和完成窗體的背景圖片
493*312
WixUIExclamationIco
WaitForCostingDlg界面中的感嘆號圖標
32*32
WixUIInfoIco
取消和錯誤提示框中的提示信息圖標
32*32
WixUINewIco
BrowseDlg界面中的按鈕圖像
16*16
WixUIUpIco
BrowseDlg界面中的按鈕圖像
16*16
自定義ExitDlg窗體
ExitDlg是一個內置窗體,它在安裝成功結束后顯示。ExitDlg窗體支持顯示可選的自定義文本和一個可選的勾選框。
要在ExitDlg中顯示可選文本,則為WIXUI_EXITDIALOGOPTIONALTEXT屬性設置字符串值。示例如下:
可選文本有如下性能:
可選文本按原樣顯示設置文本,不會解析方括號等包含的屬性,如[ProductName]。如果你需要在可選文本里包括屬性,你必須設置一個自定義操作來設置屬性。示例如下:
NOT Installed
長字符串會自動換行顯示
可選文本只在初始安裝時顯示,不會在修復模式或卸載時顯示。
自定義內置對話框文本
所有WixUI內置對話框中的文本都可以在需要的時候重寫。為此,您需要向WiX本地化(.wxl)文件中添加具有相同Id值的字符串來進行覆蓋。你可以在WixUI_en-us.wxl中看到在WiX源碼中WixUI字符串的Id值。
例如,重新WelcomeDlg上的描述,你可以添加如下內容到項目的.wxl文件中:
This is a custom welcome message. Click Next to continue or Cancel to exit.
修改內置對話框集合中的UI序列
內置對話框集合中的默認順序是可以修改的。為此,你必須從相應對話框集合定義的WiX源碼中拷貝內容到項目中。然后,你需要修改元素來定義在你的安裝過程中對話框的顯示順序。
例如,把許可協議對話框從WixUI_InstallDir對話框集合中移除,你可以進行如下設置:
從WiX源碼中拷貝WixUI_InstallDir.wxs文件里的所有內容到你的項目中。
移除用于添加上一步下一步事件的元素
修改用于指定WelcomeDlg的下一步的元素 —— 將指向從LicenseAgreementDlg改為InstallDirDlg,示例如下:
1
修改用于指定InstallDirDlg上一步的元素 —— 將指向從LicenseAgreementDlg改為WelcomeDlg,示例如下:
1
注:以上內容,需要將拷貝過來的UI元素的Id修改,然后讓之前添加的UIRef的Id對應上,以此避免Id與系統原有WixUI_InstallDir里的Id沖突。示例如下:
首先將:
改為:
然后將Product元素下的:
改為:
為內置對話框集合插入自定義對話框
你可以向內置對話框序列中添加自定義的對話框。為此,你需要為新的對話框定義一個新的元素。然后,從WiX源碼中拷貝你想自定義的對話框的所有內容。然后,修改元素來定義對話框序列顯示。
例如,需要在WelcomeDlg和LicenseAgreementDlg中插入一個名為SpecialDlg的對話框—— 此處使用WixUI_InstallDir對話框集合。我們需要進行如下步驟:
在你項目中的元素下定義SpecialDlg的外觀。
從WiX源碼中拷貝WixUI_InstallDir.wxs文件里的所有內容到你的項目中。
為SpecialDlg添加上一步下一步操作,即添加元素定義,示例如下:
1
1
修改用于指定WelcomeDlg的下一步的元素 —— 將指向從LicenseAgreementDlg改為SpecialDlg,示例如下:
1
修改用于指定LicenseAgreementDlg上一步的元素 —— 將指向從WelcomeDlg改為SpecialDlg,示例如下:
1
關于在UI元素下添加SpecialDlg,由于官網未給出此操作示例,故下面添加一個簡單的示例代碼:
析:其中Dialog相關內容見:原文:Dialog Element。另需要添加Next和Back兩個按鈕是因為我們在上面需要上一步下一步操作。
WixUI本地化處理
注:官網內容為利用命令行處理本地化,但在此文末會添加利用Visual Studio處理。
使用已翻譯的UI字符串
WixUIExtension包含一系列的WiX本地化文件(.wxl)—— 為多種語言翻譯了UI文本、錯誤提示以及進度提示字符串。要指定安裝包的UI語言,可以在鏈接命令時傳入語言參數,示例如下:
light -ext WixUIExtension -cultures:fr-FR Product.wixobj -out Product.msi
WixUIExtension中翻譯了以下語言版本:
語言-Language
國家或地區-Location
語言代碼-Culture code
WXL的對應文件名-WXL file
Arabic
Saudi Arabia
ar-SA
WixUI_ar-SA.wxl
Bulgarian
Bulgaria
bg-BG
WixUI_bg-BG.wxl
Catalan
Spain
ca-ES
WixUI_ca-ES.wxl
Croatian
Croatia
hr-HR
WixUI_hr-HR.wxl
Czech
Czech Republic
cs-CZ
WixUI_cs-CZ.wxl
Danish
Denmark
da-DK
WixUI_da-DK.wxl
Dutch
Netherlands
nl-NL
WixUI_nl-NL.wxl
English
United States
en-US
WixUI_en-US.wxl
Estonian
Estonia
et-EE
WixUI_et-EE.wxl
Finnish
Finland
fi-FI
WixUI_fi-FI.wxl
French
France
fr-FR
WixUI_fr-FR.wxl
German
Germany
de-DE
WixUI_de-DE.wxl
Greek
Greece
el-GR
WixUI_el-GR.wxl
Hebrew
Israel
he-IL
WixUI_he-IL.wxl
Hindi
India
hi-IN
WixUI_hi-IN.wxl
Hungarian
Hungary
hu-HU
WixUI_hu-HU.wxl
Italian
Italy
it-IT
WixUI_it-IT.wxl
Japanese
Japan
ja-JP
WixUI_ja-JP.wxl
Kazakh
Kazakhstan
kk-KZ
WixUI_kk-KZ.wxl
Korean
Korea
ko-KR
WixUI_ko-KR.wxl
Latvian
Latvia
lv-LV
WixUI_lv-LV.wxl
Lithuanian
Lithuania
lt-LT
WixUI_lt-LT.wxl
Norwegian (Bokm?l)
Norway
nb-NO
WixUI_nb-NO.wxl
Polish
Poland
pl-PL
WixUI_pl-PL.wxl
Portuguese
Brazil
pt-BR
WixUI_pt-BR.wxl
Portuguese
Portugal
pt-PT
WixUI_pt-PT.wxl
Romanian
Romania
ro-RO
WixUI_ro-RO.wxl
Russian
Russia
ru-RU
WixUI_ru-RU.wxl
Serbian (Latin)
Serbia and Montenegro
sr-Latn-CS
WixUI_sr-Latn-CS.wxl
簡體中文-Simplified Chinese
China
zh-CN
WixUI_zh-CN.wxl
Slovak
Slovak Republic
sk-SK
WixUI_sk-SK.wxl
Slovenian
Solvenia
sl-SI
WixUI_sl_SI.wxl
Spanish
Spain
es-ES
WixUI_es-ES.wxl
Swedish
Sweden
sv-SE
WixUI_sv-SE.wxl
Thai
Thailand
th-TH
WixUI_th-TH.wxl
Traditional Chinese
Hong Kong SAR
zh-HK
WixUI_zh-HK.wxl
Traditional Chinese
Taiwan
zh-TW
WixUI_zh-TW.wxl
Turkish
Turkey
tr-TR
WixUI_tr-TR.wxl
Ukrainian
Ukraine
uk-UA
WixUI_uk-UA.wxl
使用不同語言設置創建多個安裝包
你可以通過調用一次cancle然后多次調用light來為不同語言創建一系列不同安裝語言的安裝包,示例如下:
candle Product.wxs
light -ext WixUIExtension -cultures:en-us Product.wixobj -out Product_en-us.msi
light -ext WixUIExtension -cultures:fr-fr Product.wixobj -out Product_fr-fr.msi
light -ext WixUIExtension -cultures:de-de Product.wixobj -out Product_de-de.msi
light -ext WixUIExtension -cultures:it-it Product.wixobj -out Product_it-it.msi
light -ext WixUIExtension -cultures:ja-jp Product.wixobj -out Product_ja-jp.msi
light -ext WixUIExtension -cultures:pl-pl Product.wixobj -out Product_pl-pl.msi
light -ext WixUIExtension -cultures:ru-ru Product.wixobj -out Product_ru-ru.msi
light -ext WixUIExtension -cultures:es-es Product.wixobj -out Product_es-es.msi
使用已翻譯的錯誤和進度提示文本
默認情況下,WixUI不會包含任何翻譯的錯誤或進度提示元素。你可以通過添加WixUI_ErrorProgressText元素來進行引用:
利用Visual Studio來處理以上步驟
內容為處理中文安裝包
將WixUI_zh-CN.wxl文件添加到安裝包項目里,如果要添加其他語言,將其他語言的wxl文件加入到項目中即可
重新生成安裝包即可
注意:在此處:
如果你需要同時生成多個語言的安裝時,Product.wxs中不可以出現中文,即公用的wxs文件中需要全部為英文;
但是如果你只需要一個中文的安裝包,你可以在Product.wxs中使用中文,但需要注意的是,你需要把所有其他語言的wxl文件刪除,以此避免出現CodePage錯誤問題,即語言匹配問題。
沒有評論
總結
以上是生活随笔為你收集整理的wix图片导入设置_奇葩史的奇葩事 | [译]:WiX Toolset入门——内置的WixUI界面使用配置...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 普通镜头与远心镜头
- 下一篇: 双远心镜头原理及选型方法(二)