维克斯引导程序卸载快捷方式(Wix bootstrapper uninstall shortcut)

2019-09-17 15:29发布

我想创建引导程序已经安装任何快捷键卸载。 所以,只是我想要做同样的事情将要添加和删除程序时为卸载做。

我发现,去引导程序被安装在包缓存{GUID} [bootstrappername] .EXE

一个MSI包,它会安装还安装了一个快捷方式到这个引导程序/卸载通话。 然而问题是,包的GUID是在每次构建再生。 所以我一些如何必须将其设置为MSI属性。 但我无法弄清楚如何做到这一点,在我看来,该GUID是不是建设构建完成后,但只有在知道了吗?

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

Answer 1:

如果您在使用托管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

在ProgramData包装的cache文件夹名称,其中安装包缓存

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

产品名称 - 你的引导程序“EXE”的名字

最后在你的Product.wxs您可以创建快捷方式通常的方式,但在“目标”属性,你需要通过UNINSTALLER_PATH值和“参数”设置=“/卸载”:

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

对不起我的英语不好 :)



Answer 2:

您可以使用捆绑确定位置的UpgradeCode你在bundle.wxs定义。

使用注册表路径捆绑软件的Windows卸载位置

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \卸载{您的绑定的UpgradeCode}

或64位操作系统

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\的Windows \ CurrentVersion \卸载{您的绑定的UpgradeCode}

BundleCachePath包含FULLPATH包括您bootstrapper.exe文件名到您的包缓存在包缓存。

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



文章来源: Wix bootstrapper uninstall shortcut