我正在尝试创建卸载引导程序安装的快捷方式。 简单来说,我想做的是与在“添加或删除程序”中卸载时相同的事情。
我发现引导程序安装在包缓存{guid}[bootstrappername].exe中。
其中一个msi包还会安装指向此引导程序/卸载调用的快捷方式。 但问题是,每次构建时该包的GUID都会重新生成。因此我必须将其设置为msi属性。 但我无法弄清楚如何做到这一点,似乎GUID仅知道在构建之后而不是在构建过程中?
是否有另外一种确定缓存引导程序位置的方法?
我正在尝试创建卸载引导程序安装的快捷方式。 简单来说,我想做的是与在“添加或删除程序”中卸载时相同的事情。
我发现引导程序安装在包缓存{guid}[bootstrappername].exe中。
其中一个msi包还会安装指向此引导程序/卸载调用的快捷方式。 但问题是,每次构建时该包的GUID都会重新生成。因此我必须将其设置为msi属性。 但我无法弄清楚如何做到这一点,似乎GUID仅知道在构建之后而不是在构建过程中?
是否有另外一种确定缓存引导程序位置的方法?
<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的路径<Shortcut Id="Shortcut1" Name="Uninstall" Description="Uninstall" Target="[UNINSTALLER_PATH]" Arguments="/uninstall" WorkingDirectory="Programmenufolder" />
抱歉我的英语不好 :)您可以使用在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以非静默模式启动卸载。