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

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

我有更好的方法来做到这一点吗?

有帮助吗?

解决方案

@LanceSc

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

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

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

其他提示

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

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

手动添加版本是错误的启动方式,但这应该确保您不必手动提升版本号以使其安装。

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

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

我的另一个建议是查看 WiX 而不是Visual Studio 2003进行安装。 Visual Studio 2003对MSI的支持非常有限,你最终可能会花费大量时间来对抗它,而不是让有用的工作消失。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top