デプロイ ソリューション用のカスタム ブートストラップを作成することにしました。現在、すべての製品の展開戦略を書き直し、再設計しています。残念ながら、私たちの誰も導入の専門家ではありません。
これまでの内容は次のとおりです。
A. MSI パッケージは InstallShield で作成されます。Installshield が提供するすべての機能 (IIS 統合、COM 登録、レジストリなど) を使用します。InstallShield によって作成されたダイアログは使用されません (これがブートストラップの目的です)。MSI はサイレント インストールされます。
B. InstallShield で処理できないものに対して CA を記述する必要がある場合は常に、DTF を使用してマネージ コード (C#) で記述します。カスタム アクションの使用方法を「標準化」する「カスタム アクション フレームワーク」を作成します。
C. C# でカスタム ブートストラップ (「setup.exe」) を作成して、インストールを「処理」します。
複数の MSI アプローチを採用し、MSI トランザクションを使用してブーストラップからのインストールを「チェーン」することにしました (Office 2007 インストーラーに触発されました)。
私たちが作成しようとしているブーストラップは、Visual Studio と SQL Server のブートストラップから着想を得ています。ブーストラップは次のことを担当します。
- 前提条件のインストール: 各アプリケーションには前提条件が必要です。これらの前提条件は、MSI (Office 2007 インストーラーからヒントを得た) と同じフォルダーにある XML ファイルに、他のメタデータと共にリストされています。システムの現在の状態に応じて、ブーストラップはどの前提条件をインストールするかどうかを決定します。
- 機能の選択: 「内部」MSI の機能を、エンド ユーザーにすぐに表示するのが適切でないように構成することを計画しています。「Core_Files」、「Vista_Only」、または「64bit_Only」とラベル付けされた機能があります。XML ファイル (アイテム 1) とターゲット システムのメタデータに応じて、ブートストラップは、ユーザーがカスタマイズできる "機能ツリー" を "設定" する役割を果たします (これも Office 2007 ブートストラップから着想を得ています)。
- インストール前のチェック: ブートストラップは、システムがインストールを受け取る準備ができているかどうかをチェックする責任があります。たとえば、インストールの前にマシンを再起動する必要がある場合や、ユーザーがサービス パック、パッチ、または Windows コンポーネントを手動でインストールする必要がある場合です。ユーザーの介入が必要で実行する必要があるものはすべて、ここに表示する必要があります。チェックとexeを含むチェックリスト(リストボックス)と考えてください。(SQL サーバーのブートストラップから着想を得ています)。「ルール」は C# で記述します。
- アプリケーション構成: インストール前に「構成」する必要があるアプリケーション用。これらの「パラメーター」 (ユーザー構成) は、 MSI プロパティを介してそれぞれの MSI に渡されます。
- 実際のインストール: ブートストラッパーがインストールを実行します。必要に応じて、適切な「取引」を遵守する必要があります。グループ化する必要があるすべての「製品」は、[プログラムの追加と削除] で 1 つの製品として表示されます (ARP エントリをいじることによって)。また、適切な進行状況は、インストールされている各 MSI によって報告されるものとします。
――ここまでです。
dotNetInstaller や BMG のようなカスタム ブートストラップを作成するためのすぐに使えるソリューションがいくつかあると思います。調査しましたが、期待したほど柔軟ではありません。BURNもありますが、プライムタイムの準備ができているかどうかはわかりません.
これで、独自のカスタム ブートストラッパーを作成することにしました。
質問:
私たちはクレイジーですか?独自のブートストラップを作成するべきではありませんか? 上記のアイデアのうち、現実的でないものはどれですか? より良いアプローチはありますか?
私たちの状況に関するご意見をお待ちしております。また、ご不明な点がございましたら、お気軽にお尋ねください。