Wix引导程序卸载快捷方式

4

我正在尝试创建卸载引导程序安装的快捷方式。 简单来说,我想做的是与在“添加或删除程序”中卸载时相同的事情。

我发现引导程序安装在包缓存{guid}[bootstrappername].exe中。

其中一个msi包还会安装指向此引导程序/卸载调用的快捷方式。 但问题是,每次构建时该包的GUID都会重新生成。因此我必须将其设置为msi属性。 但我无法弄清楚如何做到这一点,似乎GUID仅知道在构建之后而不是在构建过程中?

是否有另外一种确定缓存引导程序位置的方法?

2个回答

1
如果您使用Managed BA,可以尝试以下操作:
在Bundle.wxs中与MsiPackage一起添加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”的名称
在您的Product.wxs中,最后可以按照通常的方式创建快捷方式,但是在“Target”属性中需要传递UNINSTALLER_PATH值,并将“Arguments”设置为“/uninstall”: <Shortcut Id="Shortcut1" Name="Uninstall" Description="Uninstall" Target="[UNINSTALLER_PATH]" Arguments="/uninstall" WorkingDirectory="Programmenufolder" /> 抱歉我的英语不好 :)

-1

您可以使用在bundle.wxs中定义的bundle upgradecode来确定位置。

使用注册表路径到Windows卸载位置的捆绑包

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{您的捆绑包的upgradecode}

或者对于64位操作系统

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall{您的捆绑包的upgradecode}

BundleCachePath包含完整路径,包括您的bootstrapper.exe文件名,指向缓存您的捆绑包的软件包缓存。

您还可以使用值QuietUninstallString,其中包含完整的静默卸载命令,或者使用UninstallString以非静默模式启动卸载。


所有这些都是Burn的实现细节:未记录并且可能会更改。 - Bob Arnson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接