カスタムの必須コンポーネントの追加

更新 : 2007 年 11 月

Bootstrapper は、Windows インストーラ ファイルまたは実行可能プログラムとしてパッケージ化されたほとんどの再頒布可能コンポーネントをブートストラップするように構成できる汎用インストーラです。Bootstrapper は、コンポーネントのインストールを管理するために必要なすべてのメタデータを指定する、一連の単純な XML マニフェストによってプログラミングされます。Bootstrapper は、アプリケーションで Windows インストーラと ClickOnce のどちらのインストーラ テクノロジを使用するかは指定しません。

ユーザーが Setup.exe を開始すると、まず、既にインストールされている必須コンポーネントがあるかどうかが検出されます。インストールされていない必須コンポーネントがある場合は、それらのコンポーネントの一覧と使用許諾契約を含むインストール ダイアログ ボックスが表示されます。すべての必須コンポーネントが検出された場合は、そのままアプリケーション インストーラが開始されます。

ユーザーが使用許諾契約に合意すると、ダウンロードとインストールのプロセスが開始されます。すべての必須コンポーネントが既にインストールされている場合は、アプリケーション自体のインストール プロセスが開始されます。

カスタム パッケージの作成

再頒布可能コンポーネントのパッケージを作成する必要がないこともあります。通常は、GAC にファイルをインストールする必要があるか、グローバル登録を実行する必要があるか、または Windows サービスを構成する共有コンポーネントまたはシステム コンポーネントの場合のみ、パッケージを作成する必要があります。

アプリケーションに再領布可能ファイルを付属させることができるかどうかを、管理プロバイダに確認する必要があります。単純なコピー操作だけで必須コンポーネントを再領布できる場合 (たとえば必須コンポーネントに依存関係がない場合) は、パッケージを作成する必要はありません。ファイルがセットアップに含まれること、またはファイルがローカル コピーに設定されていることを確認します。([プロパティ] ウィンドウで、ファイルの Copy プロパティが True に設定されている必要があります)。

また、インストーラを使用する必要があるかどうかも判断する必要があります。インストーラが必要な場合は、Bootstrapper パッケージを使用します。

新しいコンポーネント パッケージを作成するには、次が必要です。

  • EXE ファイル形式または MSI ファイル形式の再頒布可能コンポーネント。

  • パッケージの言語的に中立なメタデータをすべて含む製品マニフェスト (product.xml)。再頒布可能コンポーネントのすべてのローカライズ バージョンに共通するメタデータが含まれます。

  • 言語固有のメタデータを含むパッケージ マニフェスト (package.xml)。通常、ローカライズされたエラー メッセージが含まれます。コンポーネントの各ローカライズ バージョンに対して、少なくとも 1 つのパッケージ マニフェストが必要です。

マニフェスト ファイルは手動で作成する必要があり、そこに含まれるメタデータは、Windows Software Development Kit (SDK) 内のパッケージ スキーマ要素の説明にあるように、特定のスキーマに従っている必要があります。スキーマのリファレンスについては、「製品およびパッケージ スキーマ リファレンス」を参照してください。Visual Studio に統合されているセットアップ ビルダにより、ビルド時にマニフェスト ファイルが検証されます。

このマニフェストで、DependsOnProduct スキーマ要素を使用してパッケージ間の依存関係を指定します。

次に、製品マニフェスト ファイルとパッケージ マニフェスト ファイルを、再頒布可能パッケージ用に Visual Studio が予約済みの特別なフォルダに、再頒布可能ファイルとともにコピーします。

\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages

このフォルダに再頒布可能コンポーネントとそのマニフェストをコピーするインストーラを作成するには、プログラムで次のレジストリ キーのパス値を読み取って Bootstrapper フォルダの場所を確認します。

HKLM\Software\Microsoft\GenericBootstrapper\3.5

再頒布可能コンポーネントは、パッケージのディレクトリの下の専用のサブフォルダにそれぞれ表示されます。製品マニフェストと再頒布可能ファイルは、このサブフォルダに格納されます。コンポーネントのローカライズ バージョンとパッケージ マニフェストは、カルチャ名に従って名前が付けられたサブフォルダに格納されます (「CultureInfo」の表を参照してください)。

これらのファイルが Bootstrapper フォルダにコピーされると、Visual Studio の [必須コンポーネント] ダイアログ ボックスに自動的に表示されるようになり、開発者がチェック ボックスをオンにするだけで選択できるようになります。

Bootstrapper を使用してインストールを構成する方法の詳細については、MSDN の記事の「Use the Visual Studio 2005 Bootstrapper to Kick-Start Your Installation」を参照してください。

Bootstrapper パッケージの再頒布可能コンポーネントの、アプリケーションのインストールからの分離

原則として、ブートストラップ パッケージの再頒布可能コンポーネントに含まれるコンポーネントと、それらを使用するアプリケーションは、分けておく必要があります。たとえば、Acme.DataWidgets.msi という名前のブートストラップ パッケージに Acme.DataWidgets.dll というコンポーネントが含まれている場合、Acme.DataWidgets.dll が開発時にプロジェクトの bindir ディレクトリに含まれたり、アプリケーションのインストーラ パッケージに配置されたりしないようにする必要があります。

したがって、ブートストラップのコンポーネントを開発用コンピュータの GAC にインストールすることをお勧めします。その際は、核となる同一の、ブートストラップ パッケージの再頒布可能コンポーネントのインストーラを使用するのが理想的です。これにより、開発時にブートストラップのコンポーネントがプロジェクトの bindir ディレクトリにコピーされるのを防ぐことができます。また、ブートストラップの再頒布可能パッケージに含まれるすべてのアセンブリを記述した RedistList ファイルを定義することもお勧めします。これにより、ブートストラップのコンポーネントがアプリケーションの配置プロジェクトに含まれるのを防ぐことができます。RedistList ファイルは、開発用コンピュータにのみインストールしてください。

これを行うには、.NET Framework のディレクトリ (\WINDOWS\Microsoft.NET\Framework) の RedistList フォルダ内で再頒布可能コンポーネントのリストを作成します。

再頒布可能リストは XML ファイルです。このファイルに company_name + component_name + RedistList.xml の形式の名前を付けます。したがって、たとえば "Acme" 社製の "Datawidgets" というコンポーネントの場合は、Acme.DataWidgets.RedistList.xml にします。再頒布可能リストの内容は、たとえば次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<FileList Redist="Acme.DataWidgets" >
<File AssemblyName="Acme.DataGrid" Version="1.0.0.0" PublicKeyToken="b03f5f7f11d50a3a" Culture="neutral" ProcessorArchitecture="MSIL" InGAC="true" />
</FileList>

[必須コンポーネント] ダイアログ ボックスへのパッケージの追加

[必須コンポーネント] ダイアログ ボックスで、アプリケーションがインストール前に必要とするコンポーネントを選択できます。Visual Studio には、標準の必須コンポーネントがいくつか用意されています。しかし、他の Microsoft コンポーネントやサードパーティ製のコンポーネントを必須コンポーネントに追加することもできます。そのためには、上記の説明に従って製品マニフェストとパッケージ マニフェストを作成する必要があります。

[必須コンポーネント] ダイアログ ボックスの [インストールする必須コンポーネントを選択する] リストには、インストールできる必須コンポーネントのパッケージが表示されます。このリスト内のパッケージの順序はマニフェストで指定されている依存関係に基づいており、パッケージはこの順序に従ってインストールされます。

Bootstrapper に汎用パッケージを追加すると、そのパッケージが [必須コンポーネント] ダイアログ ボックスに [MyPackage] として表示されます。インストールするパッケージは自動的に選択されません。

Visual Studio では、ClickOnce プロジェクトのすべての種類のプロジェクトに対して [インストールする必須コンポーネントを選択する] の [.NET Framework] チェック ボックスを既定でオンにすることにより、.NET Framework を必須コンポーネントに含めることを推奨しています。

Windows インストーラ プロジェクトでは、現在のプロジェクトがセットアップ プロジェクトまたは Web セットアップ プロジェクトの場合に、[.NET Framework] チェック ボックスが既定でオンになります。ビルド時に .NET Framework と Windows インストーラ パッケージがいずれも選択されていない場合は、ビルドの警告が表示されます。

参照

処理手順

方法 : ClickOnce アプリケーションと共に必須コンポーネントをインストールする

概念

配置の必要条件 (Visual Studio)

参照

[必須コンポーネント] ダイアログ ボックス

製品およびパッケージ スキーマ リファレンス

その他の技術情報

https://msdn.microsoft.com/msdnmag/issues/04/10/Bootstrapper/