一 為HelloWorld案例添加安裝快捷方式
通常我們安裝一個應用軟件的時候,都喜歡在桌面或開始菜單中添加快捷方式以便我們快速訪問。現在我們就在上篇添加注冊信息的基礎上為HelloWorld的安裝包添加安裝快捷方式。下面我們將以安裝開始菜單快捷方式為實例詳細地闡述一下Wix的關於安裝快捷方式的基礎知識。
首先,我們要定義好目錄結構。
開始菜單快捷方式的安裝目錄結構與應用軟件的實際安裝目錄結構不一樣。
<Directory Id="ProgramMenuFolder"> <Directory Id="ApplicationProgramsFolder" Name="HelloWorld" /> </Directory>
ProgramMenuFolder是Windows Installer預定義的一個屬性,其值為目標機器的開始菜單目錄。Id為TARGETDIR的<Directory>必須是唯一的根目錄,於是第一個<Directory>就放在該根目錄下面。第二個<Directory>是在開始菜單目錄下創建一個名為HelloWorld的子目錄。
接下來,就開始注明我們的快捷方式信息。
下面這小片段就是安裝開始菜單快捷方式的Wix代碼。
<DirectoryRef Id="ApplicationProgramsFolder"> <Component Id="ApplicationShortcut" Guid="68485251-0D3B-4EFC-8792-A721D4AE8AB7"> <Shortcut Id="StartMenuShortcut" Name="HelloWorld.exe" Description="My HelloWorld" Target="[INSTALLFOLDER]HelloWorld.exe" WorkingDirectory="INSTALLFOLDER" /> <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall" /> <RegistryValue Root="HKCU" Key="Software\Microsoft\HelloWorld" Name="StartMenuShortcut" Type="integer" Value="1" KeyPath="yes" /> </Component> </DirectoryRef>
<DirectoryRef>元素引用了我們在開始菜單目錄下定義的子目錄HelloWorld,表明我們要安裝的快捷方式就放在該HelloWorld子目錄下。然后通過一個<Component>來包含我們的快捷方式(記得Component是Windows Installer安裝的最小單元)。
通過<Shortcut>元素,我們就指定了我們要創建的快捷方式的信息。Name指定了快捷方式的名字;Description指定了快捷方式的描述信息,當鼠標移到該快捷方式上時,其會以ToolTip方式顯示;Target指定了快捷方式引導的目標文件,其中[INSTALLFOLDER]解析出Id為INSTALLFOLDER的<Directory>所指向的目標目錄的路徑,所以本快捷方式將引導路徑C:\Program Files\HelloWorld\下的HelloWorld.exe文件;WorkingDirectory則指定了該快捷方式的工作目錄。
另外,如果我們想更改快捷方式的圖標,我們需要通過一個<Icon>元素加載一個圖標文件,然后通過<Shortcut>元素的Icon屬性引用該圖標文件即可。
<RemoveFolder>元素表明在卸載HelloWorld這個應用程序時(On=”uninstall”)將刪除Id為ApplicatioinProgramsFolder的目錄(即我們在開始菜單目錄下創建的子目錄HelloWorld)。
<RegistryValue>元素指定了一個在創建快捷方式時注冊到注冊表的信息。這是創建快捷方式時必需的元素,因為快捷方式不能作為一個Component的KeyPath。
關於在桌面創建快捷方式的內容與上面差不多,在這里就不多費敲鍵盤的手力了。
最后,我們需要將Component放到一個Feature中安裝。
為了順道展示一下Feature樹,在這里我們將創建開始菜單快捷方式和桌面快捷方式放在一個單獨的Feature。
<Feature Id="ShortcutFeature" Title="Shortcut" Level="1"> <Feature Id="StartMenuShortcutFeature" Title="StartMenuShortcut" Level="1"> <ComponentRef Id="ApplicationShortcut" /> </Feature> <Feature Id="DesktopShortcutFeature" Title="DesktopShortcut" Level="1"> <ComponentRef Id="DesktopShortcutComponent" /> </Feature> </Feature>
然后,我們需要設置WixUI為WixUI_FeatureTree。
<UIRef Id="WixUI_FeatureTree" />
完整的Wix源文件
下面是一個完整Wix源文件。

將文件保存為Product.wxs,然后通過candle編譯和light鏈接,
candle Product.wxs
light Product.wixobj –out HelloWorld.msi –ext "C:\Program Files\WiX Toolset v3.6\bin\WixUIExtension.dll"
就生成我們HelloWorld的安裝包HelloWorld.msi文件了。
二 驗收我們的成果
雙擊.msi文件,在協議界面同意了協議並點下一步,我們就看到下面這樣的一個安裝界面,
看到Feature樹了吧。安裝成功后,在開始菜單和桌面都會看到命名為HelloWorld.exe的快捷方式了(雖然圖標有點挫,不過我們成功了)。
來,動手試試吧,感覺會很不一樣的噢!