加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

WiX Bundle升级:在删除旧版本之前安装新版本的MSI

发布时间:2020-12-14 04:21:09 所属栏目:Windows 来源:网络整理
导读:我有一个 WiX bundle安装 MSI并检查是否安装了.NET.安装捆绑包(和安装程序)时,一切都按预期工作. 我的问题是捆绑包升级.在升级中,捆绑包首先安装MSI的v_Next,然后取消安装v_revious的MSI. 我该如何更改此订单?我希望在升级中,在安装v_Next之前卸载MS_的v_Pr
我有一个 WiX bundle安装 MSI并检查是否安装了.NET.安装捆绑包(和安装程序)时,一切都按预期工作.

我的问题是捆绑包升级.在升级中,捆绑包首先安装MSI的v_Next,然后取消安装v_revious的MSI.

我该如何更改此订单?我希望在升级中,在安装v_Next之前卸载MS_的v_Previous.

以下是我的包:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">

    <Bundle Name="MyProductName"
            Version="1.0.0.0"
            Manufacturer="MyCompanyName"
            UpgradeCode="4abf3f67-1234-35b1-b2c1-dd7649b60e1d">

        <BootstrapperApplicationRef
            Id="WixStandardBootstrapperApplication.RtfLicense">

            <bal:WixStandardBootstrapperApplication
                SuppressOptionsUI="yes"
                LicenseFile="License.rtf"
                ThemeFile="Theme.xml"
                LogoFile="MyProductName.png"
            />
            <Payload
                Name="BootstrapperCore.config"
                SourceFile="BootstrapperCore.config"/>
            <Payload
                SourceFile="NetfxLicense.rtf"/>
        </BootstrapperApplicationRef>
        <Chain>
            <PackageGroupRef
                Id="Netfx4Full"/>
            <MsiPackage
                Compressed="yes"
                SourceFile="$(var.SolutionDir)SetupMyProductName.msi"
                Vital="yes">
            </MsiPackage>
        </Chain>
    </Bundle>
    <Fragment>
        <WixVariable
            Id="WixMbaPrereqPackageId"
            Value="Netfx4Full" />
        <WixVariable
            Id="WixMbaPrereqLicenseUrl"
            Value="NetfxLicense.rtf" />

        <util:RegistrySearch
            Root="HKLM"
            Key="SOFTWAREMicrosoftNet Framework SetupNDPv4Full"
            Value="Version"
            Variable="Netfx4FullVersion" />
        <util:RegistrySearch
            Root="HKLM"
            Key="SOFTWAREMicrosoftNet Framework SetupNDPv4Full"
            Value="Version"
            Variable="Netfx4x64FullVersion"
            Win64="yes" />

        <PackageGroup
            Id="Netfx4Full">

            <ExePackage
                Id="Netfx4Full"
                Cache="no"
                Compressed="no"
                PerMachine="yes"
                Permanent="yes"
                Vital="yes"
                SourceFile="$(var.SolutionDir)packagesdotNetFx40_Full_x86_x64.exe"
                DownloadUrl="http://go.microsoft.com/fwlink/?LinkId=164193"
                DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x64FullVersion)"/>
        </PackageGroup>
    </Fragment>
</Wix>

谢谢Rob的答案.我试图这样做,但它不起作用(我肯定会遗漏一些东西)……这就是我在MSI中所拥有的:

<Product Id="*"
         Name="MyProductName"
         Language="1033"
         Version="1.0.0.0"
         Manufacturer="MyCompanyName"
         UpgradeCode="aa027fd0-5111-1236-9af6-55581a588123">
    <Package InstallerVersion="200"
             Compressed="yes"
             InstallScope="perMachine" />
    <MajorUpgrade DowngradeErrorMessage="A newer version of MyProductName is already installed."
                  AllowDowngrades="no"/>
    <MediaTemplate />

    <Feature Id="ProductFeature"
             Title="MyProductName"
             Level="1">
        <ComponentRef Id="ApplicationShortcut" />
        <ComponentGroupRef Id="AllFiles" />
    </Feature>
</Product>

如果我运行v_previous MSI然后运行v_Next MSI(单独,不在捆绑包中),我将同时安装,因此不会执行升级.我究竟做错了什么?

没关系,MajorUpgrade正在运作.我的版本编号在vNext MSI中是错误的.我现在还需要添加次要的升级支持.

升级的软件包总是在今天卸载**.要在v_Next.msi之前删除v_Previous.msi,请将v_Next.msi主要升级(请参阅 MajorUpgrade element)v_Previous.msi.

**我认为有一个功能请求允许其他展示位置,但还没有人实现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读