Wix bootstrapper卸载快捷方式

时间:2012-05-30 15:00:29

标签: wix installation burn

我正在尝试创建卸载引导程序安装的快捷方式。 所以我只想做卸载时添加和删除程序所做的事情。

我发现de bootstrapper安装在包缓存中{guid} [bootstrappername] .exe

它安装的其中一个msi软件包还会安装此bootstrapper / uninstall调用的快捷方式。 但问题是每次构建时都会重新生成包的GUID。所以我有些必须将它设置为 一个msi属性。 但我无法弄清楚如何做到这一点,在我看来GUID在建设过程中是不知道的,但只有在构建完成后才知道?

还有另一种方法来确定缓存的引导程序的位置吗?

2 个答案:

答案 0 :(得分:1)

如果您使用Managed 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

打包缓存 - ProgramData中的文件夹名称,其中安装捆绑缓存

Engine.StringVariables [“WixBundleProviderKey”] - 缓存包创建的文件夹名称(guid)

ProductName - 引导程序“exe”的名称

最后在你的Product.wxs中你可以通常的方式创建快捷方式,但是在“Target”属性中你需要传递UNINSTALLER_PATH值和“Arguments”set =“/ uninstall”:

<Shortcut Id="Shortcut1" Name="Uninstall" Description="Uninstall" Target="[UNINSTALLER_PATH]" Arguments="/uninstall" WorkingDirectory="Programmenufolder" />

抱歉我的英语:)

答案 1 :(得分:-1)

您可以使用您在bundle.wxs中定义的捆绑包升级代码来确定位置。

使用Windows卸载位置的注册表路径

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall {捆绑包的升级代码}

或64位操作系统

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall {捆绑包的升级代码}

BundleCachePath 包含完整路径,其中包含bootstrapper.exe文件名到缓存包的缓存包。

您还可以使用包含完整安静卸载命令的 QuietUninstallString 值或 UninstallString 在非安静模式下启动卸载。