Wix 安装程序在安装时删除了不同的产品

Wix installer is removing a different product when installing

我有两种不同的产品(A、B),它们是通过自定义 Wix 安装程序安装的。出于某种原因,当安装 A 并尝试安装 B 时,A 作为 B 安装的一部分被卸载,反之亦然,当安装 B 时,A 卸载 B。

我有非常相似的 WIX 文件,但每个文件都有不同的产品升级代码。我做了一些搜索,似乎每个人都有相反的问题,即升级没有卸载他们的产品。

任何关于必须更改的内容的想法都将不胜感激,因为我已经用头撞墙好几个小时了。

这是我的一个 wix 文件。这个和另一个之间的主要区别是不同的 cookiecutter 变量(guid 和 formal_name)和“<-- CONTENT -->, <-- CONTENTREFS -->”内容部分。这两个应用程序都安装到不同的位置。

<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product
        Id="*"
        UpgradeCode="{{ cookiecutter.guid }}"
        Name="{{ cookiecutter.formal_name }}"
        Version="0.1.1"
        Manufacturer="{{ cookiecutter.organization_name }}"
        Language="1033">
    <Package
            InstallerVersion="200"
            Compressed="yes"
            Comments="Windows Installer Package"
    />

    <Media Id="1" Cabinet="product.cab" EmbedCab="yes"/>

    <Property Id="ARPHELPLINK" Value="https://www.myhome.com" />
    <Property Id="ARPURLINFOABOUT" Value="Home Page" />
    <Property Id="ARPNOREPAIR" Value="1" />
    <Property Id="ARPNOMODIFY" Value="1" />

    <MajorUpgrade AllowDowngrades="yes"
                  AllowSameVersionUpgrades="no"
                  IgnoreRemoveFailure="no"
                  Schedule="afterInstallInitialize" />

    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="AppDir" Name="{{ cookiecutter.formal_name }}">
<!-- CONTENT -->
            </Directory>
        </Directory>

        <Directory Id="ProgramMenuFolder">
            <Directory Id="ApplicationProgramsFolder" Name="{{ cookiecutter.formal_name }}"/>
            <Directory Id="DesktopFolder" Name="{{ cookiecutter.formal_name }}DesktopFolder"/>
        </Directory>
    </Directory>
        <DirectoryRef Id="ApplicationProgramsFolder">
            <Component Id="ApplicationShortcutStartMenu" Guid="*">
                <Shortcut Id="ApplicationShortcut1" Name="{{ cookiecutter.formal_name }}" Description="{{ cookiecutter.description }}" Target="[DIR_python]\python.exe" WorkingDirectory="AppDir" Arguments="app\start.py" />
                <RegistryValue Root="HKCU" Key="Software\{{ cookiecutter.organization_name }}\{{ cookiecutter.formal_name }}" Name="installed" Type="integer" Value="1" KeyPath="yes" />
                <RemoveFolder Id="CleanUpShortCut1" Directory="ApplicationProgramsFolder" On="uninstall"/>
            </Component>
        </DirectoryRef>
        <DirectoryRef Id="DesktopFolder">
            <Component Id="ApplicationShortcutDesktop" Guid="*">
                <Shortcut Id="ApplicationShortcut2" Name="{{ cookiecutter.formal_name }}" Description="{{ cookiecutter.description }}" Target="[DIR_python]\python.exe" WorkingDirectory="AppDir" Arguments="app\start.py" />
                <RegistryValue Root="HKCU" Key="Software\{{ cookiecutter.organization_name }}\{{ cookiecutter.formal_name }}DesktopFolder" Name="installed" Type="integer" Value="1" KeyPath="yes" />
                <RemoveFolder Id="CleanUpShortCut2" Directory="DesktopFolder" On="uninstall"/>
            </Component>
        </DirectoryRef>

    <Feature Id="DefaultFeature" Level="1">
<!-- CONTENTREFS -->

        <ComponentRef Id="ApplicationShortcutStartMenu"/>
        <ComponentRef Id="ApplicationShortcutDesktop"/>
    </Feature>


    <Property Id="ALLUSERS" Value="1"></Property>
</Product>

升级代码:此行为与相同的升级代码一致,请使用其中一种方法验证是否属于这种情况此处显示已安装设置的所有升级代码:

MSI 文件硬事实:或者 - 或者最好 - 检查涉及的实际 MSI 文件的 Upgrade table是否安装。

自定义操作:我想您的安装程序中也可能有一个自定义操作将其他产品卸载为自定义操作步骤插入安装序列中的某处(只有少数位置有效)。请使用 to determine what is in the tables: Custom Action and Upgrade 检查您的 MSI。请报告任何嫌疑人。

Launcher:有问题的 MSI 不是从 setup.exe 是吗?或者来自 batch file 或一些 automated system for deployment?


更新:也许看看昨天的回答。至少有些相关: