我正在使用VS 2003构建安装。安装有一个Excel工作簿和两个Access数据库。无论用户计算机上现有数据库的创建/修改日期如何,我都需要强制加载Access文件。我目前使用ORCA在两个文件上强制使用版本号,但是希望找到一个更简单,更优雅的解决方案(手动编辑.msi文件不是我认为的“最佳实践”。
有没有办法使用Access将版本号添加到数据库,然后在安装中使用?
我有更好的方法吗?
答案 0 :(得分:2)
@LanceSc
我不认为MsiFileHash表会在这里提供帮助。请参阅Aaron Stebner的excellent post。客户端计算机上Access数据库的最后修改日期很可能与其创建日期不同。 Windows Installer将正确地假设文件自安装以来已更改,并且不会替换它。
解决这个问题的正确方法(正如问题作者所指出的那样)是在File表中设置Version字段。
不幸的是,Visual Studio中的安装项目非常有限。您可以创建简单的VBS脚本来修改File表中的记录(使用SQL),但我建议您查看替代设置创作工具,例如WiX,InstallShield或Wise。我认为WiX是最好的。
答案 1 :(得分:0)
由于听起来您没有正确版本的资源,您是否尝试过更改REINSTALLMODE属性?
IIRC,默认值为'omus',它是'o'标志,只有你有旧版本时才允许你安装。您可以尝试将其从“o”更改为“e”。请注意,这将覆盖丢失的,较旧的和同等版本的文件。
手动添加版本是错误的启动方式,但这应该确保您不必手动提升版本号以使其安装。
答案 2 :(得分:0)
查看项目的Build Events。可以在构建事件期间修改文件的版本。 [只是不要引用我的]。我不确定你能不能,但那将是我首先开始调查的地方。
答案 3 :(得分:0)
您应该为这些文件填充MsiFileHash表。查看WiFilVer.vbs thtat是Microsoft Platform SDK的一部分,以了解如何执行此操作。
我的另一个建议是查看WiX而不是Visual Studio 2003进行安装。 Visual Studio 2003对MSI的支持非常有限,你最终可能会花费大量时间来对抗它,而不是让有用的工作消失。