2017-04-04 9 views
0

私は自分のアプリケーションの.msiを生成するためにWix Toolsetを使用しています。すべてが新しいバージョンにアップグレードするときは、新しいバージョンのインストールを実行するたびにセットアップが既にインストールされている機能を検出するのではなく、デフォルトで「必須」という機能がデフォルト設定になります。ユーザーがインストールを再度明示的にチェックしない限り、それらは削除されます。Wixのアップグレードmsiがすでにインストールされている機能を削除しています

新しいバージョンがインストールされるたびに、現在どの機能がインストールされているかを.msiが検出することはありますか?

  <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 
      <Product Id="*" UpgradeCode="9e578e3d-0119-425c-8633-f54ffaaa4929" Name="@[email protected]" Version="@[email protected]" Manufacturer="@[email protected]" Language="1033"> 
      <Package InstallerVersion="400" Compressed="yes" InstallScope="perMachine" Comments="@[email protected]" Description="@[email protected]"/> 
      <Media Id="1" Cabinet="myapp.cab" EmbedCab="yes" /> 

      <!-- Installer Properties --> 
      <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" /> 
      <PropertyRef Id="WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED"/> 

      <!-- Check Existing Install --> 
      <Upgrade Id="9e578e3d-0119-425c-8633-f54ffaaa4929"> 
       <UpgradeVersion Minimum="@[email protected]" OnlyDetect="yes" Property="NEWERVERSIONDETECTED"/> 
       <UpgradeVersion Minimum="0.0.0" Maximum="@[email protected]" IncludeMinimum="yes" IncludeMaximum="no" Property="OLDERVERSIONBEINGUPGRADED"/> 
      </Upgrade> 
      <Condition Message="A newer version of this software is already installed.">NOT NEWERVERSIONDETECTED</Condition> 

      <!-- Prerequisites --> 
      <Condition Message="This application requires .NET Framework 4.6 or newer. Please install the .NET Framework then run this installer again."> 
       <![CDATA[Installed OR WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED]]> 
      </Condition> 

      <Condition Message="This application is only supported on Windows 7, Windows Server 2008 R2 or higher."> 
       <![CDATA[Installed OR (VersionNT >= 601)]]> 
      </Condition> 

    ... 

    <Feature Id="Feature_Application" 
         Title="Application" 
         ConfigurableDirectory="APPLICATIONDIR" 
         Level="1" 
         AllowAdvertise="no"> 
         @[email protected] 
         <ComponentRef Id="ApplicationShortcut" />      
         <ComponentRef Id="CleanupApplicationData" />      
     </Feature> 

     <!-- Feature: My Service --> 
     <Feature Id="Feature_Service" 
         Title="My Service" 
         Description="My Service" 
         ConfigurableDirectory="REPORTDIR" 
         Level="3" 
         AllowAdvertise="no"> 
         @[email protected]  
         <ComponentRef Id="ServiceShortcut" />      
      <Component Id="MyServiceInstaller_ServiceControl" Guid="B72CAA3F-F2DB-48D2-90DD-061209AB2CE5" Directory="REPORTDIR"> 
       <CreateFolder /> 
       <File Id="MyService.exe" Name="MyService.exe" KeyPath="yes" Source="@[email protected]\MyService\MyService.exe"/> 
       <ServiceInstall Id="MyServiceInstaller_ServiceInstall" 
        Type="ownProcess" 
        Vital="yes" 
        Name="Windows Service"      
        DisplayName="Windows Service" 
        Description="Windows service" 
        Start="auto" 
        Account="NT AUTHORITY\LocalService" 
        ErrorControl="ignore" 
        Interactive="no" /> 
       <ServiceControl Id="MyServiceInstaller_ServiceInstall" 
        Name="My Service" 
        Stop="both" 
        Remove="uninstall" 
        Wait="yes" />    
      </Component>  

     </Feature> 

    <InstallExecuteSequence> 
     <RemoveExistingProducts After="InstallValidate"/> 
    </InstallExecuteSequence> 

    <UIRef Id="WixUI_FeatureTree" /> 
    <UI> 
     <DialogRef Id="FilesInUse" /> 
     <DialogRef Id="MsiRMFilesInUse" /> 
     <!-- Add the GUI logic for installation --> 
    </UI> 
    </Product> 
+0

奇妙に思えるあなたのUIが戻って「デフォルト」の値に状態を再設定されていない限り、MigrateFeatureStates標準アクションは、このの世話をする必要があります。私は、UI(msiexec/i install.msi/l * v UILog.txt)と静かに(msiexec/i install.msi/qn/l * v quietLog.txt)のアップグレードを2度おこなうことをお勧めします。機能の状態が発生します。 –

+0

(!FeatureID = 3)を使用して、機能がインストールされているかどうかを検出できます。 詳細については、リンクを確認してください: https://www.firegiant.com/wix/tutorial/com-expression-syntax-miscellanea/expression-syntax/ –

答えて

関連する問題