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