我尝试添加一个功能,使用一个单一的upgradeScripts.sql文件升级我的SQL数据库,我需要在其中硬编码以前的构建版本,在运行升级脚本之前,我需要检查upgradeScripts.previous构建号是否匹配LocalDB.build编号。如果不匹配,那么不执行升级脚本。那么我如何在WIX本身中硬编码以前的构建号?
upgradeScripts.sql
upgradeScripts.previous
LocalDB.build
ia2d9nvy1#
不确定是否可以通过wix来完成,但可以将构建号存储在注册表中,并使用自定义操作来检查它:
jv4diomz2#
我更喜欢在数据库中创建一个表并使用它。备份/恢复数据库和安装/卸载/重新安装/升级都太容易了,谁知道MSI版本是什么版本。重要的是,当前安装的MSI可以创建一个全新的数据库,并将以前的模式迁移到当前版本。我这样做是为了简单的数据库,需要安装在客户端静默。或者,对于服务器/更复杂的数据库,我喜欢把它从安装程序移到应用程序中。例如Azure DevOps服务器使用管理工具来完成这一操作。这样,您的开发人员可以使用所有他们喜欢的工具,而不必为WiX和MSI而烦恼。
2条答案
按热度按时间ia2d9nvy1#
不确定是否可以通过wix来完成,但可以将构建号存储在注册表中,并使用自定义操作来检查它:
1.在该自定义操作try to read value from registry中
1.如果存在,请使用值. you can do it from custom action too运行脚本,或者修改脚本并运行via sql script
1.成功安装后添加new version to registry。您可以通过CA使用OnExit=“success”执行此操作-它将仅在成功安装时运行。Here's example with cancel,只需将其更改为success。或者在脚本运行后添加自定义操作。这更简单。
jv4diomz2#
我更喜欢在数据库中创建一个表并使用它。备份/恢复数据库和安装/卸载/重新安装/升级都太容易了,谁知道MSI版本是什么版本。重要的是,当前安装的MSI可以创建一个全新的数据库,并将以前的模式迁移到当前版本。我这样做是为了简单的数据库,需要安装在客户端静默。
或者,对于服务器/更复杂的数据库,我喜欢把它从安装程序移到应用程序中。例如Azure DevOps服务器使用管理工具来完成这一操作。这样,您的开发人员可以使用所有他们喜欢的工具,而不必为WiX和MSI而烦恼。