製品用に 1 つの msi を作成しましたが、正常に動作していますが、前提条件として .net 4.0 をインストールする必要があります。私はやけどとブートストラップに出くわしましたが、いくつか質問があります:
メインの msi とブートストラップ用に別のプロジェクトを作成する必要がありますか?
私の顧客は msi (exe ではない) を必要としていますが、ブートストラッパーは msi でよいですか?
製品用に 1 つの msi を作成しましたが、正常に動作していますが、前提条件として .net 4.0 をインストールする必要があります。私はやけどとブートストラップに出くわしましたが、いくつか質問があります:
メインの msi とブートストラップ用に別のプロジェクトを作成する必要がありますか?
私の顧客は msi (exe ではない) を必要としていますが、ブートストラッパーは msi でよいですか?
MSI(Windowsインストーラー)は、1つの.msiパッケージがしばらく実行されてから一時停止し、別のインストーラーパッケージを実行してから、一時停止した場所から取得する「ネストされた」インストールをサポートしていません。MSIは、基本的にシステムグローバルであるいくつかのWindowsリソースを使用するため、「内部」インストールは「外部」リソースにトランプをインストールします。
単一のユーザーエクスペリエンスとして複数のインストールを実行する方法は、各インストールを一度に1つずつ順番に実行することです。これが、チェーンナーとしても知られるブートストラッパーの目的です。つまり、リンクごとにインストールのチェーンを実行します。ブートストラッパー自体はインストールパッケージではありません。これは、 1つ以上のインストールパッケージを実行するためのツールです。
そのため、ブートストラッパーを.msiにすることはできません。それ自体はインストーラーパッケージではありません。ブートストラッパーは、バッチファイルやスクリプトのように単純なものにすることも、WiX書き込みバンドルやFlexeraAdminStudioなどの強力なツールを使用することもできます。
.exeとして出荷されるインストーラーパッケージがいくつかあることに注意してください。たとえば、.NETFrameworkまたはSQLServerインストーラーです。これらは基本的に、 1つ以上の.msiパッケージを含む自己解凍型アーカイブであり、そのペイロードの一時的なコピーをダンプしてから、その上でWindowsインストーラーサービスを実行します。ある意味では、それらは「ブートストラッパー」とパッケージであり、すべてが1つにまとめられています。ブートストラッパーはパッケージ(および他のブートストラッパー)を実行できますが、その逆はできません。
外側のパッケージに、内側のパッケージを起動するカスタムアクションを実行させることができると思うかもしれません。私たちは皆それを試しました...そしてあなたが特定のターゲットシステムでそれをうまくやっているように見えても、それが一般的に機能しないという難しい方法を見つけました。
Windowsインストーラーは、顧客が思っているようには機能しない、できない、機能しないことを顧客に説得する必要があります。悲しいことに、これを行う唯一の方法は、顧客を交換することである場合があります。
bootstrapperプロジェクトは別のプロジェクトであり、出力として.exeを生成します。これは独自の実行可能ファイルですが、.msiは基本的にWindowsインストーラーによって処理されるデータベースです。