How To: ブートストラップ プログラムを使って .NET Framework を インストールする

.NET Framework を使って書かれたアプリケーションは たいてい、インストール プロセスの一部 として Framework をインストールする必要があります。.NET Framework インストーラーでの 依存状態のせいで、( Visual C++ と DirectX ランタイムでできる様に ) パッケージ内に直接 Framework を包含する 手段がありません。代わりに、ブートストラップ プログラムを当てに しなければなりません: つまり、まず .NET Framework をインストールして、そして アプリケーションのインストーラーを実行する ラッパー アプリケーションです。

WiX は今のところ ブートストラップ プログラムを提供していませんが、Visual Studio で ClickOnce 配置によって提供されている物を 使う事ができます。このドキュメントは、 .NET Framework 3.5 用 ClickOnce ブートストラップ プログラムを生み出すのに どのように WiX プロジェクトを変更するかを ざっと見ます。SQL Server Compact Edition と Visual Studio Tools for Office といった 他のテクノロジーについてのブートストラップ プログラムを生み出すのにも 同様のステップを用いる事ができます。

( 訳注: MSDN .NET Framework アプリケーションと Dotnetfx.exe をインストールするための単一のセットアップ プロジェクトの作成、 .NET Framework 1.1 の再配布の中ほど 「.NET Framework アプリケーションと Dotnetfx.exe をインストールするための単一のセットアップ プロジェクトの作成」、 にあるように MSDNにも ツールがあるようです。 1.1 、 1.00 。
しかし、最近のバージョンでは前提ファイルが多く、Framework 2.0 でも MDAC 2.8、Windows Installer 3.0、Internet Explorer 5.01 以降の新しいバージョンが必要である為、ClickOnce の方 が良いようです。 Microsoft Component Installer SDK for Windows も お調べ下さい(これは古いですね)。
現在 Microsoft が出している最新のものは MSBuild か Visual Studio が出力する物のようですね。 CodePlex はサイトだけ MS のようです。)

Step 1: 編集する .wixproj ファイルを開く

Visual Studio で 編集する .wixproj ファイルを開く:

  1. Visual Studio でプロジェクトを開く
  2. ソリューション エクスプローラーで、プロジェクト ファイルを 右クリックして プロジェクトを閉じる を選ぶ
  3. ソリューション エクスプローラーで、プロジェクト ファイルを 右クリックして <projectname> の編集 を選ぶ

Step 2: 必要条件の為のアイテムを 追加する

プロジェクト ファイルで <Project> エレメント内のどこででも、以下を追加する:

<ItemGroup>
    <BootstrapperFile Include="Microsoft.Net.Framework.3.5">
        <ProductName>.NET Framework 3.5</ProductName>
    </BootstrapperFile>
    <BootstrapperFile Include="Microsoft.Windows.Installer.3.1">
        <ProductName>Windows Installer 3.1</ProductName>
    </BootstrapperFile>
</ItemGroup>

これらのアイテムは、ステップ3で ブートストラップ生成タスクに インクルードするパッケージの リストを知らせるのに 使われます。このケースでは、パッケージは .NET Framework 3.5 と ( .NET Framework インストールの為に要求されるコンポーネントである ) Windows Installer 3.1 です。

Step 3: ブートストラップ生成タスクを 追加する

プロジェクト ファイルで、ファイルの終わりで <Target Name="AfterBuild"></Target> エレメントのコメントを外して、それを 以下で置き換えてください:

<Target Name="AfterBuild">
    <GenerateBootstrapper ApplicationFile="$(TargetPath)" 
			  ApplicationName="My Application Name"
			  BootstrapperItems="@(BootstrapperFile)"
			  ComponentsLocation="Relative"
			  CopyComponents="True"
			  OutputPath="$(OutputPath)"
			  Path="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\"/>
</Target>

これは MSBuild に インストーラーのビルドが完了した後に ブートストラップ プログラムを 生成する事を 指示します。ApplicationFile アトリビュートは、ビルドが完了した後に アプリケーション インストーラーの場所になります。ApplicationName アトリビュートは、 ブートストラップ プログラムが動いている間 ユーザーに表示される アプリケーション名です。 BootstrapperItems アトリビュートは、( ステップ2から ) インクルードする 必要条件のリストを 提供します。ComponentsLocation アトリビュートは、必要条件が アプリケーション インストーラー と同じ場所からインストールされる事を示す Relative にセットされています。CopyComponents アトリビュートは、必要条件ファイルを出力ディレクトリーにコピーする True にセットされて います。OutputPath アトリビュートは、ディスク上の インストーラーの出力場所になります。

Path アトリビュートは、必要条件パッケージの マシン上の位置を 指し示しています。 上で示されている場所は、Visual Studio 2008 がインストールされているマシンで デフォルト位置に 妥当なものです。Visual Studio 2005 がインストールされているマシンでは、 デフォルト位置は C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages です。

Step 4: プロジェクトを ビルドする

プロジェクトをビルドする為に 再び開くのに 以下を行って下さい:

  1. 変更を保存する
  2. ソリューション エクスプローラーで、プロジェクト ファイルを 右クリックして プロジェクトを開く を選ぶ
  3. その結果表示される確認ダイアログで はい を 選ぶ

では プロジェクトをビルドして下さい。インストーラーがビルドされた後、ブートストラップ プログラムがビルドされて 出力ディレクトリーに置かれます。

他のパッケージのインストール

他のパッケージが、上で述べられたのと同じメカニズムを使って インストールされ得ます。 唯一の追加ステップは、ステップ2でのブートストラップ プログラム ファイルのリストを 変更する事です。必要なエントリーを手に入れるのにもっとも容易な手段は、選択された 要求パッケージを持つ 新しい MSBuild ファイルを作成するのに Bootstrapper Manifest Generator ツールを使う事です。それで 生成されたファイルを保存し、テキストエディタで それを開き、適切なエントリーを コピーします。Bootstrap Manifest Generator ツールは、 ClickOnce ブートストラップ プログラム経由でインストールされる カスタムパッケージを作成する のにも 使う事ができます。