1

我有一个旧的安装程序,它是一个基本的 Visual Studio 安装项目,现在它已被 WIX 安装程序取代。新的 Wix 安装程序工作正常,期待我的必要性。

许多客户端都安装了旧版本,现在,在我们产品的下一个版本中,我们需要使用这个 Wix 安装程序。

我需要 Wix 安装程序来替换旧安装,而无需通过控制面板卸载以前的版本。

我曾尝试输入与以前相同的产品代码,也更改了升级代码,但它不起作用。

有谁知道是否可以用Wix Installers替换来自VS Installers的安装?

<?define Product.UpgradeCode = "{60DA573D-4C8A-48CA-ADA5-9C130A7100E8}" ?>
<?define Product.ProductCode = "{1A65C362-E880-4F2A-ADEF-B1D83A87C914}" ?>

<Product Id="$(var.Product.ProductCode)"
           Name="My Application"
           Language="1033"
           Version="$(var.REVISION)"
           Manufacturer="My Manufacturer"
           UpgradeCode="$(var.Product.UpgradeCode)">
           ...
           ...
<MajorUpgrade Schedule="afterInstallInitialize" 
  DowngradeErrorMessage="A later version of MY PRODUCT is already installed." />

<Upgrade Id="$(var.Product.UpgradeCode)">
<UpgradeVersion Minimum="$(var.BUILD)" 
    IncludeMinimum="no" OnlyDetect="yes" 
    Property="NEWERVERSIONDETECTED" />
  <UpgradeVersion Maximum="$(var.PREVBUILD)" 
   IncludeMaximum="yes" OnlyDetect="no" 
   Property="OLDERVERSIONBEINGUPGRADED" />
</Upgrade>

错误信息

错误

4

2 回答 2

4

该错误消息意味着您的 ProductCode 没有更改。您希望 UpgradeCode 相同,但您希望 ProductCode 在每个构建中都是唯一的。为此,您将其设置为“*”,编译器将在构建时生成一个。

如果您随后安装但在“添加删除程序”中获得 2 个条目,则意味着您的 MajorUpgrade 规则有问题。

于 2013-08-30T19:42:21.237 回答
0

在 WiX v3.11.2 中,<MajorUpgrade>可以替换 VS Setup Project 的设置。

在 Product.wxs 中,此代码有效。

<MajorUpgrade DowngradeErrorMessage="Downgrade Error" AllowSameVersionUpgrades="yes" />

并且相同的 UpgradeCode 不足以升级过程。

将 InstallScope 更改为“perMachine”后如何修复 wix 设置的升级逻辑

例如,在我的项目中, InstallScope = "perMachine" is bad ,所以我删除了这个属性。

<Package  InstallScope="perMachine"
于 2020-12-25T08:36:01.620 回答