WiX インストーラーを使用して DB アップグレードを実装することを検討しています。したがって、要素を持つコンポーネントはほとんどありませんSqlScript
。しかし、コンポーネントの実行シーケンスに依存できるかどうかはわかりません。
WiX は、フラグメントで定義されている順序で常にコンポーネントを MSI コンポーネント テーブルに追加しますか? また、Windows インストーラーはコンポーネント テーブルの順序でそれらを実行することを保証しますか?
WiX インストーラーを使用して DB アップグレードを実装することを検討しています。したがって、要素を持つコンポーネントはほとんどありませんSqlScript
。しかし、コンポーネントの実行シーケンスに依存できるかどうかはわかりません。
WiX は、フラグメントで定義されている順序で常にコンポーネントを MSI コンポーネント テーブルに追加しますか? また、Windows インストーラーはコンポーネント テーブルの順序でそれらを実行することを保証しますか?
いいえ、MSI は特定の順序でコンポーネントを処理しません。それは非決定論的です。ただし、WiX が提供する SQL スクリプト カスタム アクションは、特定の順序でスクリプトを処理します。SqlScript@Sequence 属性によって決定されます。
CustomActions が評価されると、インストールされているコンポーネントに基づいて、実行する必要があるスクリプトが決定されます。次に、Sequence 属性に基づいてその結果を並べ替え、インストールのスケジュールを設定します。
インストールのカテゴリに基づいて、100 200 300 400 のようなものを使用する傾向があります。
100 - 空のデータベースを作成する
200 - テーブルの作成
300 - 制約を適用する
400 - データのロード
500 - プロシージャやトリガーなどのオブジェクトを作成する
アイデアは、101 対 102 を細かく管理する必要はなく、インストールの段階として扱うだけです。