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 ブートストラップ プログラム経由でインストールされる カスタムパッケージを作成する のにも 使う事ができます。