如果您使用托管 BA,您可以尝试以下操作:
在与 MsiPackage 链接的 Bundle.wxs 中,添加 MsiProperty,如:
<MsiPackage SourceFile="Setup.msi">
<MsiProperty Name="UNINSTALLER_PATH" Value="[UNINSTALLER_PATH]"/>
</MsiPackage>
在代码中的某处(在调用安装操作之前),您需要为此变量设置值,如下所示:
Engine.StringVariables["UNINSTALLER_PATH"] = string.Format(@"{0}\{1}\{2}\{3}.exe", Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Package Cache", Engine.StringVariables["WixBundleProviderKey"], ProductName);
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) – %systemdir%:\ProgramData 的路径
Package Cache- 安装包缓存的 ProgramData 中的文件夹名称
Engine.StringVariables["WixBundleProviderKey"] – 缓存包创建的文件夹名称 (guid)
ProductName – 引导程序“exe”的名称</p>
最后,在您的 Product.wxs 中,您可以创建快捷方式,但在“Target”属性中,您需要传递 UNINSTALLER_PATH 值和“Arguments”设置 =“/uninstall”:
<Shortcut Id="Shortcut1" Name="Uninstall" Description="Uninstall" Target="[UNINSTALLER_PATH]" Arguments="/uninstall" WorkingDirectory="Programmenufolder" />
对不起我的英语不好 :)