我正在考虑使用WiX安装程序实施数据库升级。因此,使用SqlScript
元素的组件很少。但我不确定我是否可以依赖组件执行顺序。
WiX是否始终将组件添加到MSI组件表中,以便它们在片段中定义? Windows安装程序是否保证按组件表的顺序执行它们?
答案 0 :(得分:2)
不,MSI不按任何给定顺序处理组件。这是非确定性的。但是,WiX提供的SQL脚本自定义操作会按给定顺序处理脚本。它由SqlScript @ Sequence属性决定。
当CustomActions评估它时,它将根据正在安装的组件决定需要执行哪些脚本。然后,它将根据Sequence属性对结果进行排序,并安排它进行安装。
我倾向于使用基于安装类别的100 200 300 400之类的东西。
100 - 创建空数据库
200 - 创建表
300 - 应用约束
400 - 加载数据
500 - 创建procs和触发器等对象
这个想法是你不需要对101和102进行微观管理,而只是将其视为安装阶段。