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