通過前面的幾篇隨筆,我們已經給我們的HelloWorld提供了填寫注冊表信息,以及開始菜單快捷方式和桌面快捷方式。這些在安裝時添加的內容,在卸載時也會自動地刪除。但是,到目前為止,我們的卸載只有兩種方式:通過原始安裝包或控制面板中的卸載或更改程序。現在,我們來學習Wix如何為我們的HelloWorld在安裝時在開始菜單中提供卸載的快捷方式。
一 添加卸載快捷方式
添加卸載的快捷方式也是通過<Shortcut>元素來實現的,關於如何添加快捷方式的更多詳情,請參考本系列上一篇,在這里我們就講講添加卸載快捷方式的<Shortcut>元素的具體內容。
<Shortcut Id="UninstallHelloWorld" Name="Uninstall" Target="[SystemFolder]msiexec.exe" Arguments="/x [ProductCode]" Description="Uninstall HelloWorld" />
其中,Target指出了可運行程序msiexec.exe的位置,msiexec.exe是Windows Installer提供的客戶端安裝卸載程序服務。SystemFolder是Windows Installer預定義的屬性,其值表示目標機器的System32文件夾所在路徑,通常為C:\Windows\System32。Argument將安裝包的ProductCode傳遞給msiexec.exe,告知要卸載的是哪一個產品。
完整的WiX源文件請看下面的Product.wxs,

通過運行編譯和鏈接命令,
candle Product.wxs
light Product.wixobj –out HelloWorld.msi –ext "C:\Program Files\WiX Toolset v3.6\bin\WixUIExtension.dll"
就生成了我們的HelloWorld.msi安裝包文件。
二 驗收我們的成果
雙擊HelloWorld.msi文件,安裝HelloWorld。安裝完成后,在開始菜單的所有程序下的HelloWorld目錄下就看到一個命名為Uninstall的卸載快捷方式,如下圖所示,
單擊Uninstall快捷方式,就可以快捷地卸載我們安裝的HelloWorld了。然后,你再去查看一下注冊表中安裝時填寫的信息以及安裝的開始菜單快捷方式和桌面快捷方式是否都已被刪除。
是的,我們要做到無殘留卸載!