Wix学习整理(2)——HelloWorld安装添加UI
在前一篇隨筆Wix學(xué)習(xí)整理(1)——快速入門HelloWorld中,我們制作的安裝包安裝界面太簡(jiǎn)單,沒(méi)有與用戶進(jìn)行交互的過(guò)程。下面我們修改Wix源文件來(lái)給安裝程序添加UI。
1 Wix的預(yù)定義UI簡(jiǎn)介
Wix toolset提供的WixUIExtension.dll包(在目錄C:\Program Files\WiX Toolset v3.6\bin下)中提供了五種UI對(duì)話框集合,分別是WixUI_Advanced、WixUI_FeatureTree、WixUI_InstallDir、WixUI_Minimal和WixUI_Mondo。下面分別對(duì)這五種預(yù)定義UI對(duì)話框集合進(jìn)行簡(jiǎn)單的說(shuō)明。
WixUI_Advanced對(duì)話框集合
WixUI_Advanced提供了與WixUI_Minimal類似的一鍵安裝形式。不過(guò)其在協(xié)議界面提供了配置高級(jí)選項(xiàng)的按鈕。在高級(jí)選項(xiàng)中,我們可以選擇該產(chǎn)品是安裝給當(dāng)前用戶還是給所有用戶的,在Wix文件中需要一個(gè)Id為“WixAppFolder”的屬性(Property),指定默認(rèn)選擇當(dāng)前用戶(WixPerUserFolder)還是所有用戶(WixPerMachineFolder)。另外,需要一個(gè)Id為“ApplicationFolderName”的屬性來(lái)指定產(chǎn)品所安裝在的默認(rèn)文件夾。
<Property Id=”ApplicationFolderName” Value=”HelloWorld” /> <Property Id=”WixAppFolder” Value=”WixPerUserFolder” /> <UIRef Id=”WixUI_Advanced” />WixUI_FeatureTree對(duì)話框集合
WixUI_FeatureTree與WixUI_Mondo的區(qū)別是WixUI_FeatureTree省略了安裝類型對(duì)話框。協(xié)議同意對(duì)話框之后就直接到部件(Feature)選擇對(duì)話框了。當(dāng)我們的產(chǎn)品默認(rèn)是安裝所有部件時(shí),更推薦采用WixUI_Feature而不是WixUI_Mondo。其用法是:
<UIRef Id=”WixUI_FeatureTree” />WixUI_InstallDir對(duì)話框集合
WixUI_InstallDir不支持用戶選擇安裝的部件,但是其增加了讓用戶選擇安裝目錄的對(duì)話框。在Wix文件中需要一個(gè)Id為“WIXUI_INSTALLDIR”的屬性來(lái)產(chǎn)品要安裝的目錄的ID(ID必須是全部大寫,大寫的目的是為了能夠讓用戶在對(duì)話框中選擇的自定義目錄能夠回寫到相對(duì)應(yīng)ID的Directory元素)。其在下面的用例中的用法是:
<Property Id=”WIXUI_INSTALLDIR” Value=”INSTALLFOLDER” /> <UIRef Id=”WixUI_InstallDir” />WixUI_Minimal對(duì)話框集合
WixUI_Minimal是最小的預(yù)定義對(duì)話框集合,其將Welcome對(duì)話框和協(xié)議同意對(duì)話框結(jié)合,選擇協(xié)議后就直接安裝了。這種對(duì)話框集合適用于我們的產(chǎn)品沒(méi)有自定義部件以及不支持變更安裝目錄的情況。其用法是:
<UIRef Id=”WixUI_Minimal” />WixUI_Mondo對(duì)話框集合
WixUI_Mondo提供了Welcome、協(xié)議同意、安裝類型選擇、部件選擇等自定義安裝的對(duì)話框,但其不支持安裝目錄的變更。當(dāng)我們的產(chǎn)品默認(rèn)情況下不安裝全部部件時(shí),這樣典型安裝(typical)和完全安裝(complete)之間就有個(gè)明顯的區(qū)別,此時(shí)推薦使用WixUI_Mondo。其用法是:
<UIRef Id=”WixUI_Mondo” />下面我們的用例就設(shè)置WixUI_Mondo對(duì)話框集合。
2 制作帶UI界面的HelloWorld.msi
修改Product.wxs文件,內(nèi)容如下
1 <?xml version="1.0" encoding="UTF-8"?> 2 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 3 <Product Id="*" Name="HelloMSI" Language="1033" Version="1.0.0.0" Manufacturer="LEH" UpgradeCode="1de12ee7-2e94-42ac-979f-06245a0ade30"> 4 <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 5 <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> 6 7 <Directory Id="TARGETDIR" Name="SourceDir"> 8 <Directory Id="ProgramFilesFolder"> 9 <Directory Id="INSTALLFOLDER" Name="HelloWorld"> 10 <Component Id="ProductComponent" Guid="B5F0C012-49D6-4C63-AFCA-0CE6C24C6D7D"> 11 <File Id="HelloWorld" Source="HelloWorld.exe" /> 12 </Component> 13 </Directory> 14 </Directory> 15 </Directory> 16 17 <Feature Id="ProductFeature" Title="HelloWorld" Level="1"> 18 <ComponentRef Id="ProductComponent" /> 19 </Feature> 20 21 <UIRef Id="WixUI_Mondo" /> 22 </Product> 23 </Wix>相對(duì)比之前的Product.wxs文件,這個(gè)文件只是添加了上面標(biāo)紅的<UIRef Id=”WixUI_Mondo” />一行語(yǔ)句而已。若想使用其他的預(yù)定義對(duì)話框集合,只需將紅色語(yǔ)句變更為相應(yīng)對(duì)話框集合的用法語(yǔ)句即可。
下面開(kāi)始編譯和鏈接該文件以生成.msi文件。編譯命令還是不變,
candle Product.wxs鏈接的命令為
light Product.wixobj –out HelloWorld.msi –ext "C:\Program Files\WiX Toolset v3.6\bin\WixUIExtension.dll"其中-ext選項(xiàng)指定了特定的擴(kuò)展包WixUIExtension.dll,其運(yùn)行結(jié)果如下,
?
編譯和鏈接后,在文件Product.wxs所在目錄即生成了HelloWorld.msi文件。
3 驗(yàn)收我們的成果
雙擊HelloWorld.msi文件,可以看到如下安裝的交互界面,?
選擇Typical,然后Next,
完工!現(xiàn)在HelloWorld.exe文件已成功安裝在目錄C:\Program Files\HelloWorld下。
轉(zhuǎn)載于:https://www.cnblogs.com/lienhua34/archive/2012/10/08/2714654.html
總結(jié)
以上是生活随笔為你收集整理的Wix学习整理(2)——HelloWorld安装添加UI的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: html input type=fil
- 下一篇: Oracle事务之一:锁和隔离