在UIRef更改后,WiX安装程序中的主要升级无法正常工作

时间:2012-11-02 16:51:54

标签: visual-studio installer wix

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

版本1.0中的

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

Wix版本3.6

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

中级版本升级良好(1.0-> 1.1-> 1.2)。

2.0的主要变化是:

  1. 主要下的新子功能
  2. 从WixUI_FeatureTree更改为UIRef,到WixUI_Advanced  允许部署从'AllUsers'和'Single User'中选择
  3. 删除现有产品定义为:

    <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>
    

    我想知道我能做些什么 强制安装程序检查升级并执行 删除不再处理的先前版本 跟随我的变化。

1 个答案:

答案 0 :(得分: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" />安装每位用户,因此此属性似乎不会影响PerMachinePerUser的选择,因此我已将其重新插入。立即升级再次工作。