如何:创建卸载快捷方式
如何:创建卸载快捷方式
当安装一个应用程序的时候,在用户的开始菜单中提供一个卸载应用程序的快捷方式是非常必要的。本例演示了在开始菜单创建一个通过ICE(译者注:Internal Consistency Evaluators)验证的卸载快捷方式。
本例假定你已经阅读过如何:在开始菜单中创建快捷方式章节。
第一步:添加卸载Shortcut元素
<Shortcut>元素用来添加卸载快捷方式到开始目录,并且快捷方式指向msiexec.exe文件(Windows Installer可执行文件,用来真正调用卸载进程)。在已有的快捷方式Component中添加下面的片段:
<Shortcut Id="UninstallProduct"
Name="Uninstall My Application"
Target="[System64Folder]msiexec.exe"
Arguments="/x [ProductCode]"
Description="Uninstalls My Application" />
Target属性指出msiexec.exe的位置。Windows Installer内置的System64Folder Property将根据目标机器是32位还是64位分别解析成System32文件夹或者SysWow64文件夹。使用这个Property可以确保msiexec.exe总是被正确定位,而无关目标机器上的操作系统版本。Arguments属性通过传递ProductCode来让msiexec.exe知道要卸载哪一个产品(译者注:/x代表本操作是卸载,[ProductCode]是WiX的一个内置Property,参见下面完整示例中的Product节点)。
为了避免编译时ICE验证错误,将一个Shortcut元素和一个注册表键值与一个RemoteFolder元素绑定在一起是很重要的。两个元素都在如何:在开始菜单中创建快捷方式中详细叙述了,并且下面的完整示例中也有。
完整示例
下面是使用前面代码片段的完整示例。本例可以被插入到WiX工程中编译或者在命令行中编译链接来生成安装包。
<?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="*" UpgradeCode="PUT-GUID-HERE" Version="1.0.0.0" Language="1033" Name="My Application Name" Manufacturer="My Manufacturer Name"> <Package InstallerVersion="300" Compressed="yes"/> <Media Id="1" Cabinet="myapplication.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="APPLICATIONROOTDIRECTORY" Name="My Application Name"/> </Directory> <Directory Id="ProgramMenuFolder"> <Directory Id="ApplicationProgramsFolder" Name="My Application Name"/> </Directory> </Directory> <DirectoryRef Id="APPLICATIONROOTDIRECTORY"> <Component Id="myapplication.exe" Guid="PUT-GUID-HERE"> <File Id="myapplication.exe" Source="MySourceFiles\MyApplication.exe" KeyPath="yes" Checksum="yes"/> </Component> <Component Id="documentation.html" Guid="PUT-GUID-HERE"> <File Id="documentation.html" Source="MySourceFiles\documentation.html" KeyPath="yes"/> </Component> </DirectoryRef> <DirectoryRef Id="ApplicationProgramsFolder"> <Component Id="ApplicationShortcut" Guid="PUT-GUID-HERE"> <Shortcut Id="ApplicationStartMenuShortcut"
Name="My Application Name"
Description="My Application Description"
Target="[APPLICATIONROOTDIRECTORY]MyApplication.exe" WorkingDirectory="APPLICATIONROOTDIRECTORY"/> <!-- Step 1: Add the uninstall shortcut to your installer package --> <Shortcut Id="UninstallProduct" Name="Uninstall My Application" Description="Uninstalls My Application" Target="[System64Folder]msiexec.exe" Arguments="/x [ProductCode]"/> <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/> <RegistryValue Root="HKCU" Key="Software\Microsoft\MyApplicationName" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component> </DirectoryRef> <Feature Id="MainApplication" Title="Main Application" Level="1"> <ComponentRef Id="myapplication.exe" /> <ComponentRef Id="documentation.html" /> <ComponentRef Id="ApplicationShortcut" /> </Feature> </Product> </Wix>