微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WiX捆绑包会在ARP中为同一版本创建多个条目

如何解决WiX捆绑包会在ARP中为同一版本创建多个条目

我创建了一个WiX捆绑包,该捆绑包仅安装了VC redist,而不是MSI。

如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
    <Bundle Name="Thrust" Version="1.1.0.0" Manufacturer="Maker" UpgradeCode="e356a490-31a8-4c0b-9aeb-82cbf3350082">
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />

        <Chain>
            <!-- Install required VCRedist -->
            <PackageGroupRef Id="VCRedist"/>
            <!-- Install Thrust Msi -->
            <MsiPackage Id="ThrustInstaller"
                Cache="yes" Compressed="yes" Visible="yes"
                displayInternalUI="no"
                SourceFile="..\ThrustInstaller\bin\Release\ThrustInstaller.msi">
            </MsiPackage>
        </Chain>
    </Bundle>
    <Fragment>

        <util:RegistrySearch 
                             Variable="IsVCInstalled"
                             Root="HKLM"
                             Key="SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X64"
                             Value="Installed"
                             Win64="yes"
                             />

        <util:RegistrySearch 
                             Variable="VCVersionMajor"
                             Root="HKLM"
                             Key="SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X64"
                             Value="Major"
                             Win64="yes"
                             />
        <util:RegistrySearch 
                             Variable="VCVersionMinor"
                             Root="HKLM"
                             Key="SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X64"
                             Value="Minor"
                             Win64="yes"
                             />
        <util:RegistrySearch 
                        Variable="VCVersionBld"
                        Root="HKLM"
                        Key="SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X64"
                        Value="Bld"
                        Win64="yes"
                        />
        
        <WixVariable Id="WixMbaPrereqLicenseUrl" Value="" />
        <WixVariable Id="WixMbaPrereqPackageId" Value="VCRedist" />
        <PackageGroup Id="VCRedist">
            <ExePackage Id="VCRedist"
                        SourceFile="..\..\external\VC_redist.x64.exe"
                        InstallCommand="/q /norestart"
                        Cache="no"
                        PerMachine="yes"
                        Permanent="yes"
                        Vital="yes"
                        Compressed="yes"
                        DetectCondition="IsVCInstalled AND VCVersionMajor >= 14 AND VCVersionMinor >= 27 AND VCVersionBld >= 29016"
                        InstallCondition="1"/>
        </PackageGroup>
    </Fragment>
</Wix>

VC redist安装按预期工作。

但是,当安装具有相同版本但MSI内部版本不同的捆绑软件时,我可以看到正在安装MSI,但是在ARP中我得到了捆绑软件的重复条目(其中只有1个条目MSI符合预期)。

在MSI中,我允许相同版本的升级

<MajorUpgrade AllowDowngrades="no" AllowSameVersionUpgrades="yes" Schedule="afterInstallInitialize" DowngradeErrorMessage="A newer version of [ProductName] is already installed." />

我猜测ARP中的两个条目的原因是捆绑包不允许相同版本的升级

我对how-to-do-major-upgrades-when-using-burn-wix-3-6中的答案不满意,它建议升级捆绑软件版本。如果MSI版本不同于已安装的MSI版本,但捆绑版本相同,则无法实现某种行为吗?

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。