1
我有一個應用程序,它可以安裝在兩種形式交付:安裝,升級與MSI導致多個版本安裝
- MSI軟件包;和
- 包含軟件包以及一些鏈接先決條件的WiX軟件包。
大多數用戶會選擇安裝捆綁軟件,但我想保留手動安裝必備軟件和MSI軟件包的可能性。
我的自動更新過程涉及下載新的MSI軟件包並進行重大升級。只要應用程序最初使用MSI軟件包進行安裝,此功能就可以正常工作。但是,如果應用程序是從軟件包安裝的,我最終會並排安裝兩個版本。
如何確保使用下載的MSI進行升級可以正確替換或刪除原始包?
Bundle.wxs:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="The Product" Version="!(bind.packageVersion.TheProduct.Msi)" Manufacturer="TheCompany" UpgradeCode="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
<bal:WixStandardBootstrapperApplication
LicenseFile="Resources\license.rtf"
LogoFile="Resources\logo.png" />
</BootstrapperApplicationRef>
<Chain>
<PackageGroupRef Id="NetFx451Web" />
<MsiPackage Id="TheProduct.Msi" SourceFile="$(var.TheProduct.Msi.TargetPath)" Vital="yes" Compressed="yes" />
</Chain>
</Bundle>
</Wix>
Product.wxs(的MSI):
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="TheProduct" Language="1033" Version="!(bind.fileVersion.TheProduct.dll)" Manufacturer="TheCompany" UpgradeCode="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perUser" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes" />
<UIRef Id="WixUI_Minimal" />
</Product>
<!-- ... snip ... -->
</Wix>