製品マニフェストを作成する
アプリケーションの前提条件を配置するには、ブートストラップ パッケージを作成します。 ブートストラップ パッケージには、ロケールごとのパッケージ マニフェストを除く、単一の製品マニフェスト ファイルが含まれています。 パッケージ マニフェストには、パッケージのローカライズ固有の側面が含まれています。 これには、文字列、エンドユーザー ライセンス契約、および言語パックが含まれます。
パッケージ マニフェストの詳細については、「方法: パッケージ マニフェストを作成する」を参照してください。
製品マニフェストを作成する
製品マニフェストを作成するには
ブートストラップ パッケージ用のディレクトリを作成します。 この例では、C:\package を使用します。
Visual Studio で、package.xml という新しい XML ファイルを作成し、C:\package フォルダーに保存します。
次の XML を追加して、パッケージの XML 名前空間と製品コードを記述します。 製品コードをパッケージの一意の識別子に置き換えます。
<Product xmlns="http://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 を追加します。 ブートストラップは自動的に /qn フラグを .msi ファイルに追加します。これはサイレント インストールされます。 ファイルが .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 の場合、これは \Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages ディレクトリです。
例
製品マニフェストには、カスタムの必須コンポーネントのインストール手順が含まれています。
<?xml version="1.0" encoding="utf-8" ?>
<Product
xmlns="http://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 Property="IsMsiInstalled"
Product="{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>