如何将版本号添加到 .msi 中的 Access 文件

Posted

技术标签:

【中文标题】如何将版本号添加到 .msi 中的 Access 文件【英文标题】:How to add a version number to an Access file in a .msi 【发布时间】:2010-09-11 06:28:35 【问题描述】:

我正在使用 VS 2003 构建安装。该安装有一个 Excel 工作簿和两个 Access 数据库。无论用户计算机上现有数据库的创建/修改日期如何,我都需要强制加载 Access 文件。我目前使用 ORCA 在两个文件上强制输入版本号,但想找到一个更简单、更优雅的解决方案(手动编辑 .msi 文件并不是我认为的“最佳实践”。

有没有办法使用 Access 向数据库添加版本号,然后在安装中使用?

我有更好的方法吗?

【问题讨论】:

【参考方案1】:

@LanceSc

我认为 MsiFileHash 表在这里没有帮助。请参阅 Aaron Stebner 的 excellent post。客户端计算机上 Access 数据库的最后修改日期很可能与其创建日期不同。 Windows Installer 将正确地假定文件自安装以来已更改并且不会替换它。

解决这个问题的正确方法(正如问题作者指出的那样)是在文件表中设置版本字段。

不幸的是,Visual Studio 中的设置项目非常有限。您可以创建简单的 VBS 脚本来修改 File 表中的记录(使用 SQL),但我建议改用其他设置创作工具,例如 WiX、InstallShield 或 Wise。我认为 WiX 是最好的。

【讨论】:

【参考方案2】:

您应该为这些文件填充MsiFileHash 表。查看 WiFilVer.vbs ,它是 Microsoft Platform SDK 的一部分,以了解如何执行此操作。

我的另一个建议是查看 WiX 而不是 Visual Studio 2003 进行安装。 Visual Studio 2003 对 MSI 的支持非常有限,您最终可能会花费大量时间与之抗争,而不是获得有用的工作。

【讨论】:

【参考方案3】:

查看您项目的构建事件。在构建事件期间可能会修改文件的版本。 [只是不要引用我的话]。我不确定你是否可以,但那将是我首先开始调查的地方。

【讨论】:

【参考方案4】:

由于听起来您没有正确版本化的资源,您是否尝试过更改 REINSTALLMODE 属性?

IIRC,在默认值 'omus' 中,它是 'o' 标志,只有在您有旧版本时才允许您安装。您可以尝试将其从“o”更改为“e”。请注意,这将覆盖丢失的、较旧且版本相同的文件。

手动添加版本是错误的开始方式,但这应该确保您不必手动增加版本号来安装它们。

【讨论】:

以上是关于如何将版本号添加到 .msi 中的 Access 文件的主要内容,如果未能解决你的问题,请参考以下文章

WiX:更新“添加/删除程序”中显示的版本号

如何在每次创建 msi 期间动态更改 wix 中的产品版本

Access 2007 Engine:如何将它包含在我的 .msi 安装程序中?

将版本号添加到 Windows 中的通用文件

如何将Excel Web Access Web部件添加到我的sharepoint库中?

如何自动将内部版本号添加到 Xcode ios 存档