VS2010 - 创建MSI文件,如何编写纯文本文件?

时间:2014-04-05 21:09:46

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

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

在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文件

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

      

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

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

    任何人都可以提供指导吗?

3 个答案:

答案 0 :(得分:0)

我认为我对一般的MSI安装行为有更多的阅读。暂时我通过将RemovePreviousVersions属性设置为false并将REINSTALLMODE属性设置为" amus"来克服我的问题。

当RemovePreviousVersions属性为true时,我能够观察到,我的更新文件将被安装,然后在以后删除。禁用此属性会更正。

为了好的措施,我将REINSTALLMODE属性设置为amus,而不是默认的omus。有关REINSTALLMODE的更多详细信息,请访问http://msdn.microsoft.com/en-us/library/aa371182(v=vs.85).aspx

答案 1 :(得分:0)

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不允许您对文件进行哈希处理或使用协同服务器。覆盖规则是如果文件在安装后被更改,那么它将不会被替换,假设用户已经更改了它。

答案 2 :(得分:0)

我认为您正在寻找File Versioning Rules

  

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

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