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

C# 无法从控制面板中删除wix引导程序应用程序,c#,wix,uninstallation,wix3.5,bootstrapper,C#,Wix,Uninstallation,Wix3.5,Bootstrapper,我创建了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.mic

我创建了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="..\Shared\Lib\" ?>
            <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="msi\p1.msi" />
                    <Payload SourceFile="msi\p2.msi" />
                    <Payload SourceFile=".../.exe" />

                </BootstrapperApplicationRef>

                <Chain>
                    <PackageGroupRef Id="NetFx40Web" />
                    <MsiPackage Id="Product1" SourceFile="msi\p2.msi" InstallCondition="InstallP=1" />
                    <MsiPackage Id="Product2" SourceFile="msi\P1.msi" />
                    <ExePackage Id="Product3" SourceFile="p2.exe" />
                </Chain>

            </Bundle>
    </Wix>


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

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

  • 查找要卸载的引导程序的GUID。最好的方法是在%temp%目录中找到它的安装日志文件,并找到以下行:
  • 会话开始,注册密钥:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{PUT-GUID-HERE}

    如果没有日志文件,请转到PAR。2</P>

  • 在以下注册表项中查找并删除有关引导程序的内容。最好的方法是通过GUID实现,但您也可以使用bootstapper的DisplayName。注意:如果您使用DisplayName,则可能会混淆两个安装程序引导程序
  • 计算机\HKEY\U类\U根目录\Installer\Dependencies

    软件\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall

    软件\Microsoft\Windows\CurrentVersion\Uninstall

    (后两个配置单元取决于MSI的InstallScope。如果所有配置单元都是每台计算机,则捆绑包将位于HKLM中。)

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

    为了避免将来的重复,您有几种选择:

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

  • msi日志告诉你什么?