安装时检查文件版本

Check file-version at install time

我有一个包含未压缩文件的安装程序:

<Component Id="Uncompressed">
    <File Id="UncompressedFile" Vital="yes" Source="Uncompressed.dll" Compressed="no" />
</Component>

可以在实际安装包之前替换此文件。这意味着,构建时的版本号与安装时的版本号不同。不过,MSI 始终包含构建时的版本。因此文件没有得到更新。

我有什么可能性:

  1. 安装时检查文件版本(理想)
  2. 忽略此文件的文件版本(如果 1. 不可能)

我可以创建安装程序而无需在构建时实际提供文件吗?

this related question 中有一些可能的解决方法:

您的流程不够理想。如果 MSI 文件 table 包含的版本与您实际安装的文件不同,则可能会出现几个问题。如果磁盘上的文件版本与 MSI 中的版本不匹配,则存在修复问题的范围,尝试更正损坏的安装。当有重大升级(或补丁)时 Windows 会看到版本不匹配,并且不知道磁盘上的文件是否应该在升级中用新文件替换,因为它无法进行正确的版本比较.

我不会试图延续这种情况。最简单的修复方法是 运行 msifiler.exe(来自 Windows SDK)以在替换文件时修复 MSI 文件 table 版本。