gpt4 book ai didi

WiX 升级问题 - 文件的主要版本增加,但修订版本较低,现在删除旧文件,但升级过程中未复制新文件

转载 作者:行者123 更新时间:2023-12-03 17:58:40 27 4
gpt4 key购买 nike

我根据目录(用于 Web 应用程序)为我的安装程序自动生成一个 WiX 文件,其中包含对以下 3 个 .Net 程序集的引用:

  • Migrator.dll
  • Migrator.Framework.dll
  • Migrator.Providers.dll

  • 这是生成 WiX 片段:
    <Fragment>
    <DirectoryRef Id="bin">
    <Component Id="bin.Migrator.dll" Guid="*">
    <File Id="bin.Migrator.dll" Name="Migrator.dll" KeyPath="yes" Source="..\WebApplication\bin\Migrator.dll" />
    </Component>
    </DirectoryRef>
    </Fragment>
    <Fragment>
    <DirectoryRef Id="bin">
    <Component Id="bin.Migrator.Framework.dll" Guid="*">
    <File Id="bin.Migrator.Framework.dll" Name="Migrator.Framework.dll" KeyPath="yes" Source="..\WebApplication\bin\Migrator.Framework.dll" />
    </Component>
    </DirectoryRef>
    </Fragment>
    <Fragment>
    <DirectoryRef Id="bin">
    <Component Id="bin.Migrator.Providers.dll" Guid="*">
    <File Id="bin.Migrator.Providers.dll" Name="Migrator.Providers.dll" KeyPath="yes" Source="..\WebApplication\bin\Migrator.Providers.dll" />
    </Component>
    </DirectoryRef>
    </Fragment>

    我们已经使用相同的基本安装程序结构一年左右,但最近我们将 Migrator.Net 库更新为一个新的内部构建,它看到版本号和程序集标题/描述属性从(从 Orca 转储)发生变化
  • bin.Migrator.dll bin.Migrator.dll Migrator.dll 16384 3.0.1317.0 0 512 78
  • bin.Migrator.Framework.dll bin.Migrator.Framework.dll pi0mozkr.dll|Migrator.Framework.dll 20992 3.0.1317.0 0 512 79
  • bin.Migrator.Providers.dll bin.Migrator.Providers.dll jq05waoy.dll|Migrator.Providers.dll 73216 3.0.1317.0 0 512 82

  • 升级库后:
  • bin.Migrator.dll bin.Migrator.dll Migrator.dll 16384 3.2.0.1 0 512 55
  • bin.Migrator.Framework.dll bin.Migrator.Framework.dll pi0mozkr.dll|Migrator.Framework.dll 28160 3.2.0.1 0 512 56
  • bin.Migrator.Providers.dll bin.Migrator.Providers.dll jq05waoy.dll|Migrator.Providers.dll 79872 3.2.0.1 0 512 57

  • 尽管次要版本更高,但修订版现在是 1 而不是 1317。

    从那以后我们发现升级到新版本导致这3个文件没有被复制(所以升级过程删除了旧文件,但没有安装新文件)。

    这是否与更改程序集的版本号有关,如果是,有没有办法覆盖此行为(我们只想删除所有内容,然后复制所有内容,无论版本如何)。

    有趣的是,如果您安装,然后重新运行安装程序并进行“修复”,它确实会复制新文件 - 我认为这是因为修复文件时不再存在,因此文件版本检查逻辑不适用?

    任何有关如何工作以及如何避免我们遇到的升级问题的提示将不胜感激。

    最佳答案

    正如 the linked question 建议的那样,您可以尝试重新安排 RemoveExistingProducts,以便在安装任何新文件之前删除旧产品,如下所示:

    <InstallExecuteSequence>
    <RemoveExistingProducts After="InstallValidate" />
    <!-- other actions -->
    </InstallExecuteSequence>

    另一种选择是修改 REINSTALLMODE 属性,并将 e 模式替换为 a ,这意味着它的值将是 amus 。这样所有文件都将重新安装,操作将花费更长的时间但更可靠。

    关于WiX 升级问题 - 文件的主要版本增加,但修订版本较低,现在删除旧文件,但升级过程中未复制新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6870405/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com