0

我在我的部署版本之间更改了 UIRef 标记。

从 1.0 版: <UIRef ID="WixUI_FeatureTree" />
到 2.0 版: <UIRef ID="WixUI_Advanced" />

蜡 3.6 版

现在,当我运行 2.0 版安装程序时,它不会检测到以前的版本,因此它不会在升级过程中卸载它,而是在现有版本旁边安装一个新版本。

中间版本升级正常(1.0->1.1->1.2)。

2.0 的主要变化是:

  1. 主要功能下的新子功能
  2. 将 UIRef 从 WixUI_FeatureTree 更改为 WixUI_Advanced 以允许部署从“AllUsers”和“Single User”中进行选择

删除现有产品定义为:

<InstallExecuteSequence>      
     <RemoveExistingProducts After='InstallInitialize' />

      <Custom Action=...
    ...

我的产品定义为:

#UpgradeCode# is consistent between versions
#ProductId# is changed between versions

<Product Id="#ProductId"
  UpgradeCode="#UpgradeCode#"
  Name="!(loc.ApplicationName)"
  Language="1033"
  Codepage="1252"
  Version="2.0.0"
  Manufacturer="!(loc.Manufacturer)">    
     <Package 
          Id="*"
          InstallerVersion="300" 
          InstallPrivileges="elevated"      
          Languages="1033"
          Compressed="yes"
          InstallScope="perMachine"
          Manufacturer="!(loc.Manufacturer)"
          SummaryCodepage="1252"
          Platform="x86"      
          Description="!(loc.ApplicationName)"/>
           <Upgrade Id="#UpgradeCode#">
           <UpgradeVersion OnlyDetect="no" Property="PREVIOUSFOUND"
                           Minimum="1.0.0" IncludeMinimum="yes"
                           Maximum="2.0.0" IncludeMaximum="no"/>
           </Upgrade>

我想知道是否可以采取措施强制安装程序检查升级并删除在我的更改后不再处理的先前版本。

4

1 回答 1

1

在构建日志中,我注意到:

MSI (c) (6C:C4) [12:04:44:624]:FindRelatedProducts:当前安装是按用户进行的。产品“{PRODUCT-GUID}”的相关安装是每台机器的。跳过... 操作于 12:04:44 结束:FindRelatedProducts。返回值 1。

我已经删除:

 <Product ... InstallScope="perMachine" ... />

升级版本时。

我没有意识到升级匹配包括InstallScope产品的属性。

我仍然可以使用 为每个用户安装<UIRef Id="WixUI_Advanced" />,所以这个属性似乎不会影响PerMachineor的选择PerUser,所以我把它放回去了。升级现在又可以工作了。

于 2012-11-02T19:39:10.290 回答