【问题标题】:Not reinstall last version WiX不安装最新版本的 WiX
【发布时间】:2013-07-25 21:03:21
【问题描述】:

我需要当我的安装程序找到以前的安装程序时,它会在重新安装之前将其全部删除。到目前为止,我有这个代码:

<Product Id="GUID1" Name="MyName" Language="1033"
    Version="1.0.0.0" Manufacturer="MyManufacturer" UpgradeCode="GUID2">
  <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

  <InstallExecuteSequence>
    <RemoveExistingProducts Before="InstallInitialize" />
  </InstallExecuteSequence>

  <Feature Id="ProductFeature" Title="MyTitle" Level="1">
    <ComponentGroupRef Id="MyFeatures" />
  </Feature>
</Product>

但是当我运行安装程序时,我收到这条消息:安装了该产品的另一个版本。此安装无法继续。 (或类似的东西,我的窗口不是英文的)。

如何解决?

【问题讨论】:

    标签: .net wix installation wix3.6


    【解决方案1】:

    如果您愿意,您可以使用升级代码和版本控制系统来执行此操作:

        <Product Id="*"
             Name="MyApp"
             Language="1033"
             Version="1.0.0"
             Manufacturer="Me"
             UpgradeCode="bf35a656-3e28-4f40-9ebd-566174c9c948">
    
             <MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A later version of MyApp is already installed. Setup will now exit."/>
    
             <!-- other stuff -->
        </Product>
    

    关键是您始终将产品代码保留为“*”和“UpgradeCode”常量。这将使得当您将版本更改为 1.0.1 时,它将删除所有以前的版本。但是,如果用户在已经拥有较新版本的情况下尝试安装较旧版本,则不会让他/她(除非他们先手动卸载)。

    免责声明:同一版本不会触发更新。同样更改第 4 个数字 (1.0.0.*) 也不会触发更新。它适用于 3 号版本控制方案。为了有四个数字版本,我会考虑为该软件设计一个引导程序 (setup.exe)。

    【讨论】:

    • 这不是真的。当我将版本 1.0.0.0 更改为 1.0.0.0 而不是删除以前的版本并安装新版本时,msi 会创建一个新的安装。所以现在我在同一台计算机上安装了两次我的程序。但是,如果我将版本 1.0.0.0 更改为 1.0.1.0 现在可以正常工作。那么你知道如何使用四号版本吗?
    • @JonnyPiazzi Windows Installer 定义了 Windows Installer 包的版本控制方案。当docs 明确表示格式为“major.minor.build”且每个版本都有范围限制时,为什么要尝试使用四位数版本?
    • @Tom Blodget 我在一个项目中工作,该项目之前定义的版本是:major.minor.error-correct.build,但我展示了您发布的这份文档,并且方法将被更改。谢谢。
    猜你喜欢
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2019-05-25
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多