在我的 WiX 项目中,我有一个文件数据和一个 SQL 脚本,它们创建数据库、创建/更改表、插入/更新行等。所有脚本都分为三个部分,并通过 SqlScript 元素执行。我用 ContinueOnError="no"
但如果前一个脚本成功执行,则不会回滚。我可以将所有脚本包装在事务中并使用 try/catch 块吗?是否有机会处理来自 WiZ 的 catch 事件?你有什么建议来制作这种安装程序?
最佳答案
我们不使用 Wix SQL 扩展,我们运行自定义操作来完成我们需要的工作。
在安装时,我们使用自定义操作首先备份数据库,然后运行正确的升级脚本(基于当前数据库的版本),如果需要,将数据库恢复到备份作为升级的回滚操作。
卸载时,我们备份数据库,将其删除(根据用户输入有条件地进行),并在卸载过程中出现任何问题时进行恢复。
关于sql - WiX:你如何更新数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5118581/