Windows インストーラーは、インスタンス トランスフォームによる複数のインスタンスのインストールをサポートしています。基本的に、新しい製品コード アップグレード コードを含むパッケージをインストールでき、さまざまな製品を個別に管理できます。
InstanceTransforms
パッケージに要素を追加し、デフォルト インスタンスに加えて、サポートするカスタム インスタンスごとに子要素Instance
を追加します。
<InstanceTransforms Property="INSTANCEID">
<Instance Id="P1" ProductCode="GUID1" UpgradeCode="GUID2" ProductName="My App P1" />
<Instance Id="P2" ProductCode="GUID3" UpgradeCode="GUID4" ProductName="My App P2" />
</InstanceTransforms>
これにより、最大 3 つのコピー (既定のインスタンスに加えて、インスタンス P1 および P2) をインストールできます。それぞれをインストールするには、次のコマンドのいずれかを使用します。
msiexec /i MyApp.msi
msiexec /i MyApp.msi MSINEWINSTANCE=1 TRANSFORMS=":P1"
msiexec /i MyApp.msi MSINEWINSTANCE=1 TRANSFORMS=":P2"
次に、ファイル以外のコンポーネントに属性を追加しComponent/@MultiInstance="yes"
ます。これにより、トランスフォームごとに新しいコンポーネント guid が作成されるため、コンポーネントの複数のコピー (トランスフォームごとに 1 つ) をインストールできます。
このブログ投稿「再訪: 複数インスタンスのインストールとパッチ」では、InstanceTransforms
要素とComponent/@MultiInstance
属性の使用について詳しく説明しています。