无法从控制面板中删除wix引导程序应用程序



我创建了wix-bootsrapper应用程序,它安装了2个msi并运行了1个exe文件。每当我运行它时,它都会出现在控制面板中(重复(。但当我想从控制面板上删除时,它只是在运行,而不是卸载。

我的bootsraperr代码是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<?define LibsDir="..SharedLib" ?>
<Bundle Name="Product Setup" Version="1.0.0.0" Manufacturer="MyCompany" UpgradeCode="{32FC4B59-99BE-4617-867C-4620E2E5772F}">
<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost">
<Payload SourceFile="BootstrapperCore.config" />
<Payload SourceFile="$(var.LibsDir)WixWPF.dll" />
<Payload SourceFile="$(var.LibsDir)WixWPF.pdb" />
<Payload SourceFile="msip1.msi" />
<Payload SourceFile="msip2.msi" />
<Payload SourceFile=".../.exe" />
</BootstrapperApplicationRef>
<Chain>
<PackageGroupRef Id="NetFx40Web" />
<MsiPackage Id="Product1" SourceFile="msip2.msi" InstallCondition="InstallP=1" />
<MsiPackage Id="Product2" SourceFile="msiP1.msi" />
<ExePackage Id="Product3" SourceFile="p2.exe" />
</Chain>
</Bundle>
</Wix>

我想从控制面板上卸载它。我该如何处理?

引导程序可以通过GUIDUpgradeCode版本来识别。您不能设置引导程序的GUID,它将在每次重建后随机获得一个新的。因此,如果重新构建引导程序,您将获得两个具有相同UpgradeCodeVersion但不同GUID的引导程序,并且它们都将作为两种不同的产品安装。

要从控制面板卸载旧的引导程序,您需要正确缓存它的setup.exe并使用正确配置的卸载选项。如果你有问题,请这样做:

  1. 查找要卸载的引导程序的GUID。最好的方法是在%temp%目录中找到它安装的日志文件,并找到以下行:

会话开始,注册密钥:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{PUT-GUID-HERE}

如果您没有日志文件,请转到第2段

  1. 在以下注册表项中查找并删除提及您的引导程序。最好的方法是使用GUID,但您也可以使用bootstapper的DisplayName。注意:如果使用DisplayName,则可以将两个安装程序引导程序混合使用

Computer\HKEY_CLASSES_ROOT\Installer\Dependencies

SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\卸载

软件\Microsoft\Windows\CurrentVersion\卸载

(最后两个的Hive取决于MSIs的InstallScope。如果所有这些都是每台机器的,则捆绑包将在HKLM中。(

如果引导程序已缓存,您还需要清理缓存。

为了避免将来重复,您有几个选项:

  1. 在安装以前的版本之前,不要重新构建引导程序。或者为每个生成进行备份
  2. 在每次重建之前升级引导程序版本,然后将其作为更新进行安装

最新更新