4

VS2010にパッケージされているMicrosoftインストーラーからWix3.6に交換しました。<MajorUpgrade/>タグを使用してユーザーにシームレスなアップグレードをリリースしようとしていますが、これを実行しているときにアンインストールしたくない機能が1つあります。メジャーアップグレード。

以下に示すようにRemoveFeatures="[ProductFeature]"、ProductFeatureのみが削除され、DataFeatureは残りますが、このパラメーターが指定されていない場合、Windowsの[プログラムと機能]リストからエントリが削除されません。特定の機能をアンインストールせずに適切にアップグレードするにはどうすればよいですか?

<Product Id="*" 
       Name="$(var.MyProject.ProjectName)" 
       Language="1033" 
       Version="2.6.0.0" 
       Manufacturer="Awesome Software (Pty) Ltd"          
       UpgradeCode="D7B99D7F-340D-449D-9C18-5D4A4A9B13D5">       
<Package InstallerVersion="405"
         Compressed="yes"              
         Description="Installs $(var.MyProject.ProjectName)"             
     Keywords="Awesome"
     InstallScope="perMachine"/>

<WixVariable Id="WixUILicenseRtf" Value="$(var.SolutionDir)\awesome.EULA\awesome CE Eula.rtf" />
<MediaTemplate EmbedCab="yes"/>
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." 
RemoveFeatures="[ProductFeature]" Schedule="afterInstallInitialize"/>

<Feature Id="ProductFeature" Title="Setup $(var.MyProject.ProjectName)" Level="1">      
  <ComponentGroupRef Id="FilesFragment" />
  <ComponentRef Id="C__5B1F76E18B8F479DAAA1B8C14E4B0638"/>
  <ComponentRef Id="C__5B1F76E18B8F479DAAA1B8C14E4B0639"/>
  <ComponentRef Id="cmpA0688C6933D519CB5D1B6D48D50F1E21"/>
</Feature>

<Feature Id="DataFeature" Title="Data $(var.MyProject.ProjectName)" Level="1" >
  <ComponentGroupRef Id="DataFragment" />
</Feature>

<!-- Wix UI Prompts -->
<Property Id="WIXUI_INSTALLDIR" Value="APPLICATIONFOLDER"/>            
<UIRef Id="WixUI_InstallDir"/>

<Binary Id="myCustomActionsDLL" SourceFile="$(var.CustomActions.TargetDir)MaxCut.CustomActions.CA.dll"/>

<InstallExecuteSequence>
  <Custom Action="CA_myCustomAction" Before="InstallInitialize"/>
</InstallExecuteSequence>

4

1 に答える 1

5

すべての機能をアンインストールしない場合、Windowsインストーラーは古い製品をマシンに保持します。Conditionこれは、アンインストール中にアンダーFeatureがfalseと評価された場合によく発生します。あなたはそのシナリオを打つ別の方法を見つけました。これは、それが起こるたびに人々をかなり混乱させます。

簡単な答え:機能でやろうとしていることはできません。

于 2013-03-26T15:10:09.383 に答える