【问题标题】:Cannot remove wix bootstrapper application from control panel无法从控制面板中删除 wix 引导程序应用程序
【发布时间】:2020-03-13 23:28:12
【问题描述】:

我创建了 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>

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

【问题讨论】:

  • msi 日志告诉你什么?

标签: c# wix uninstallation wix3.5 bootstrapper


【解决方案1】:

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

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

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

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

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

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

计算机\HKEY_CLASSES_ROOT\Installer\Dependencies

SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall

软件\Microsoft\Windows\CurrentVersion\卸载

(最后两个的 Hive 取决于您的 MSI 的 InstallScope。如果它们都是每台机器,则捆绑包将位于 HKLM 中。)

如果引导程序被缓存了,你还需要清理缓存。

为避免日后重复,您有多种选择:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多