方法: 製品マニフェストを作成する
アプリケーションの必須コンポーネントを配置するには、ブートストラップ パッケージを作成します。ブートストラップ パッケージには、1 つの製品マニフェスト ファイルだけでなく、各ロケールのパッケージ マニフェストも含まれます。パッケージ マニフェストには、パッケージのローカリゼーション固有の特性も含まれます。これには、文字列、ライセンス条項、Language Pack などがあります。
製品マニフェストの詳細については、「方法: パッケージ マニフェストを作成する」を参照してください。
製品マニフェストの作成
製品マニフェストを作成するには
ブートストラップ パッケージのディレクトリを作成します。この例では、C:\package を使用します。
Visual Studio で、product.xml という新しい XML ファイルを作成し、C:\package フォルダーに保存します。
次の XML を追加して、パッケージの XML 名前空間と製品コードを記述します。製品コードは、パッケージの一意識別子に置き換えてください。
<Product xmlns="https://schemas.microsoft.com/developer/2004/01/bootstrapper" ProductCode="Custom.Bootstrapper.Package">
パッケージに依存関係があることを指定する XML を追加します。この例では、Microsoft Windows インストーラー 3.1 への依存関係を使用します。
<RelatedProducts> <DependsOnProduct Code="Microsoft.Windows.Installer.3.1" /> </RelatedProducts>
ブートストラップ パッケージ内にあるすべてのファイルを列挙する XML を追加します。この例では、CorePackage.msi というパッケージ ファイル名を使用します。
<PackageFiles> <PackageFile Name="CorePackage.msi"/> </PackageFiles>
CorePackage.msi ファイルを C:\package フォルダーにコピーまたは移動します。
ブートストラップ コマンドを使用して、パッケージをインストールする XML を追加します。ブートストラップは .msi ファイルに自動的に /qn フラグを追加するため、サイレント インストールが実行されることになります。ファイルが .exe の場合、ブートストラップはシェルを使用して .exe ファイルを実行します。次の XML では CorePackage.msi への引数はありませんが、Arguments 属性にコマンド ライン引数を指定できます。
<Commands> <Command PackageFile="CorePackage.msi" Arguments="">
このブートストラップ パッケージがインストールされているかどうかをチェックする次の XML を追加します。製品コードを再頒布可能コンポーネントの GUID に置き換えます。
<InstallChecks> <MsiProductCheck Property="IsMsiInstalled" Product="{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"/> </InstallChecks>
ブートストラップ コンポーネントが既にインストールされているかどうかによって、ブートストラップの動作を変更する XML を追加します。コンポーネントがインストールされている場合、ブートストラップ パッケージは実行されません。このコンポーネントには管理特権が必要であるため、次の XML では、現在のユーザーが管理者かどうかをチェックしています。
<InstallConditions> <BypassIf Property="IsMsiInstalled" Compare="ValueGreaterThan" Value="0"/> <FailIf Property="AdminUser" Compare="ValueNotEqualTo" Value="True" String="NotAnAdmin"/> </InstallConditions>
インストールが正常終了した場合と再起動が必要な場合の終了コードを設定する XML を追加します。次の XML は、パッケージのインストールを続行しないことを示す Fail および FailReboot の終了コードの例です。
<ExitCodes> <ExitCode Value="0" Result="Success"/> <ExitCode Value="1641" Result="SuccessReboot"/> <ExitCode Value="3010" Result="SuccessReboot"/> <DefaultExitCode Result="Fail" String="GeneralFailure"/> </ExitCodes>
次の XML を追加して、ブートストラップ コマンドのセクションを終了します。
</Command> </Commands>
C:\package フォルダーを Visual Studio ブートストラップ ディレクトリに移動します。Visual Studio 2010 の場合、これは \Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages ディレクトリです。
使用例
製品マニフェストには、カスタムの必須コンポーネントのインストール指示が含まれます。
<?xml version="1.0" encoding="utf-8" ?>
<Product
xmlns="https://schemas.microsoft.com/developer/2004/01/bootstrapper"
ProductCode="Custom.Bootstrapper.Package">
<RelatedProducts>
<DependsOnProduct Code="Microsoft.Windows.Installer.3.1" />
</RelatedProducts>
<PackageFiles>
<PackageFile Name="CorePackage.msi"/>
</PackageFiles>
<InstallChecks>
<MsiProductCheck Product="IsMsiInstalled"
Property="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"/>
</InstallChecks>
<Commands>
<Command PackageFile="CorePackage.msi" Arguments="">
<InstallConditions>
<BypassIf Property="IsMsiInstalled"
Compare="ValueGreaterThan" Value="0"/>
<FailIf Property="AdminUser"
Compare="ValueNotEqualTo" Value="True"
String="NotAnAdmin"/>
</InstallConditions>
<ExitCodes>
<ExitCode Value="0" Result="Success"/>
<ExitCode Value="1641" Result="SuccessReboot"/>
<ExitCode Value="3010" Result="SuccessReboot"/>
<DefaultExitCode Result="Fail" String="GeneralFailure"/>
</ExitCodes>
</Command>
</Commands>
</Product>