【问题标题】:VS2010 - Creating MSI File, how to version plain text files?VS2010 - 创建 MSI 文件,如何对纯文本文件进行版本控制?
【发布时间】:2014-04-16 08:18:01
【问题描述】:

我有一个用于创建 .MSI 文件的 VS2010 安装程序项目。

在 MSI 文件中,我有一些配置文件,例如 myproduct.exe.config。此文件可能会也可能不会在版本之间更新。

从版本 1.0.1 转换到 1.0.2 时,此文件已更新。

我有版本 1.0.1 和 1.0.2 的 MSI 文件。

为了测试升级是否正常工作,我执行以下操作:

  1. 从 v1.0.1 安装 MSI 文件

  2. 从 v1.0.2 安装 MSI 文件

我注意到的是,在安装 v1.0.1 MSI 后,我的文件 myproduct.exe.config 应有的存在。但是,在运行 v1.0.2 MSI 文件进行升级时,该文件会消失。检查详细的 Windows 安装程序日志文件,我看到以下消息:

MSI (s) (20:C8) [13:23:18:106]:文件:C:\Program Files (x86)\xxxx\xxxx\myproduct.exe.config;覆盖;不会打补丁;现存的 文件未版本化且未修改 - 未提供源文件哈希 比较

我已经阅读了很多内容,并且相信这种情况正在发生,因为我无法对这个纯文本配置文件进行版本控制。我想要的最终结果是始终安装此更新的文件并且永远不会被遗漏。

谁能提供指导?

【问题讨论】:

  • 在对日志进行更多检查后,我发现更新后的 myproduct.exe.config 实际上已复制到位,但随后又被删除,“MSI (s) (08:E0) [14: 40:52:658]:执行操作:FileRemov (,FileName=myproduct.exe.config,,ComponentId={xxxx})"

标签: visual-studio-2010 installation windows-installer


【解决方案1】:

我想我有更多关于 MSI 安装行为的阅读资料。目前我已经通过将 RemovePreviousVersions 属性设置为 false 并将 REINSTALLMODE 属性设置为“amus”来解决我的问题。

我能够观察到,当 RemovePreviousVersions 属性为真时,我的更新文件将被安装,然后稍后被删除。禁用此属性更正了这一点。

为了更好的措施,我将 REINSTALLMODE 属性设置为 amus,而不是 omus 的默认值。更多关于 REINSTALLMODE 的细节可以在这里找到http://msdn.microsoft.com/en-us/library/aa371182(v=vs.85).aspx

【讨论】:

    【解决方案2】:

    VS 设置中的RemovePreviousVersions 应该可以正常工作。这是一个很好的起点:

    https://www.simple-talk.com/dotnet/visual-studio/updates-to-setup-projects/

    它仍然是相关的,除了您必须增加文件版本来更新文件,因为升级现在已经结束并且文件覆盖规则适用。另一个问题是 VS 升级失败,请参阅此修复:

    http://support.microsoft.com/kb/2418919/en-us

    这可能是您看到的问题。您不应该需要任何 REINSTALLMODE 东西来使例程 VS RemovePreviousVersions 正常工作。

    在 VS 升级中您对数据文件没有太多控制权,因为 VS 不允许您散列文件或使用伴随文件。覆盖规则是,如果文件在安装后被更改,则不会被替换,假设用户已更改它。

    【讨论】:

      【解决方案3】:

      我想你在找File Versioning Rules

      非版本文件是用户数据 - 如果修改日期晚于 计算机上文件的创建日期,不要安装文件 因为用户自定义将被删除。如果修改和 创建日期相同,安装文件。如果创建日期是 晚于修改日期,文件被视为未修改, 安装文件。

      看看Companion Files。它将帮助您解决问题:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-07
        • 1970-01-01
        • 2010-12-30
        • 2011-03-28
        • 1970-01-01
        • 2011-04-18
        相关资源
        最近更新 更多