如何将版本号添加到 .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 文件的主要内容,如果未能解决你的问题,请参考以下文章
Access 2007 Engine:如何将它包含在我的 .msi 安装程序中?