2

我正在考虑使用 WiX 安装程序实现数据库升级。因此,带有SqlScript元素的组件很少。但我不确定我是否可以依赖组件执行顺序。

WiX 是否总是按照在片段中定义的顺序将组件添加到 MSI 组件表中?Windows 安装程序是否保证按组件表的顺序执行它们?

4

1 回答 1

2

不,MSI 不按任何给定顺序处理组件。它是不确定的。但是,WiX 提供的 SQL 脚本自定义操作会按给定顺序处理脚本。它由 SqlScript@Sequence 属性确定。

当 CustomActions 评估时,它将根据正在安装的组件决定需要执行哪些脚本。然后它会根据 Sequence 属性对该结果进行排序并安排安装时间。

我倾向于根据安装类别使用 100 200 300 400 之类的东西。

100 - 创建空数据库

200 - 创建表格

300 - 应用约束

400 - 加载数据

500 - 创建对象,如 procs 和 triggers

这个想法是您不必对 101 与 102 进行微观管理,而只需将其视为安装阶段。

于 2012-11-06T19:05:41.950 回答