私は以前のバージョンのMy Bootstrapper Appを保持したいのですが、どうすればいいですか?WIX - 選択的にアンインストールする方法<Bundle>
MSIでアップグレードタグを使用することができ、さまざまなバージョンを識別してアンインストール操作を実行できることがわかっています。
ここで、アップグレードコードを使用する1つ以上のMSIを持つバンドルアプリケーションがあります。新しいビルドを作成するたびに、MSIとこのバンドルアプリケーションをバージョンアップします。それ以降のバージョンのBundle Appのインストールを続行すると、以前のBundleバージョンがアンインストールされます。これは私が望むものではありません。私はバンドルアプリケーションの以前のバージョンを保持したいと思います。
バンドルのUpgradeVersionのようなものがありますか。異なるバージョンを識別し、選択的にアンインストールできますか?
マイバンドルファイルのコードスニペット:
<Bundle Name="myApp"
Version="1.0.0.0"
Manufacturer="Myself"
UpgradeCode="SOME-GUID">
<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
...
</BootstrapperApplicationRef>
<Chain>
<PackageGroupRef Id= 'WindowsInstaller45'/>
<PackageGroupRef Id ='NetFx45Offline'/>
<PackageGroupRef Id ='MY_MSI'/>
</Chain>
</Bundle>
<Fragment Id ='PkgFragments'>
<PackageGroup Id ="MY_MSI">
<MsiPackage SourceFile= "$(var.Installer.TargetPath)"
Id="MYAPP"
Cache ="yes"
Visible ="no"
DisplayInternalUI ="no"
Permanent="no">
<MsiProperty Name='INSTALLLOCATION' Value='[InstallFolder]' />
<MsiProperty Name='SELECT_UNINST' Value='[UninstallPrevVersion]' />
</MsiPackage>
</PackageGroup>
</Fragment>
マイプロダクトWIXファイルのコードスニペット
<Product Id="*"
Name="$(var.ProductName)"
Version="$(var.ProductVersion)"
Manufacturer="$(var.ManufacturerName)"
UpgradeCode="$(var.UpgradeCode)">
<Property Id="SELECT_UNINST" Secure="yes">1</Property>
<Upgrade Id="SOME-GUID2">
<UpgradeVersion Minimum="0.0.0.0" Maximum="$(var.ProductVersion)" IncludeMinimum="yes" IncludeMaximum="yes" Property="UNINSTALL_PREV_VERSION" />
</Upgrade>
<CustomAction Id="UninstPrev" Property="UNINSTALL_PREV_VERSION" Value="0" />
<InstallExecuteSequence>
<Custom Action="UninstPrev" Before="InstallInitialize"><![CDATA[SELECT_UNINST <> 1]]></Custom>
<RemoveExistingProducts Overridable="no" After="UninstPrev"></RemoveExistingProducts>
</InstallExecuteSequence>
</Product>
**アップグレード**中にあなたの製品が残っていることを望むことは、アップグレードに伴うものとはまったく逆です。それらを後ろに残したい場合は、それらを同じ製品として扱わずに、新しいアップグレードGUIDと製品GUIDを与えます。各アップグレードGUIDのリストを保存し、削除する場合は、削除する特定のアップグレードGUIDを参照するタグを追加し、BootstrapperApplication dllでOnPlanRelatedBundleを適切に処理します。 –