2013-05-06 7 views
9

WiXインストーラーのメジャーアップグレードでサービスの設定(資格情報やその他のオプション)が失われないようにしようとしています。 私がアドバイスhereに続いて、各アップグレードに私の資格情報やその他のサービスの設定を失う、私はWiXのメジャーアップグレードでサービスの設定が失われないようにする

<InstallExecuteSequence> 
    <DeleteServices>NOT UPGRADINGPRODUCTCODE</DeleteServices> 
</InstallExecuteSequence> 

を使用しようとしている。しかし、私のサービスがまだアップグレードに再インストールされています。

ログには、自分の状態が1回だけ尊重されているように見えます。私は

MSI (s) (6C:E8) [16:52:53:944]: Skipping action: DeleteServices (condition is false) 

を参照し、百、数行後に、私は第二DeleteServicesは私の問題であるように私には見える

MSI (s) (6C:A4) [16:52:54:873]: Doing action: DeleteServices 

を参照してください。誰が私にその2番目のものを抑制することができるか、私がそれを引き起こすためにやっていることを教えてもらえますか?

私はWiXツールセット3.7を使用しています。 ここに私のコードは、guidsは明らかに削除されます。

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Id='*' Name='My Product' Language='1033' 
      Version='1.0.6' Manufacturer='Me' UpgradeCode='PUT-GUID-HERE' > 
    <Package Description='My Product' Platform='x86' Id='*' 
      Manufacturer='Me' InstallerVersion='200' Compressed='yes' /> 

    <MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit."/> 
    <InstallExecuteSequence> 
     <DeleteServices>NOT UPGRADINGPRODUCTCODE</DeleteServices> 
    </InstallExecuteSequence> 

    <Media Id='1' Cabinet='product.cab' EmbedCab='yes' /> 

    <Directory Id='TARGETDIR' Name='SourceDir'> 
     <Directory Id='ProgramFilesFolder' Name='PFiles'> 
     <Directory Id='AgentDir' Name='Agent'> 
      <Component Id='Binaries' Guid='PUT-GUID-HERE' Win64='no'> 
      <File Id='AgentExe' Source='../MyProduct/MyExe.exe' KeyPath='yes' ProcessorArchitecture='x86' /> 
      <ServiceInstall Id="TheServiceInstall" Description="[ProductName]" EraseDescription="no" DisplayName="[ProductName]" ErrorControl="normal" Interactive="no" Name="[ProductName]" Start="auto" Type="ownProcess" Vital="yes"> 
      </ServiceInstall> 
      </Component> 
     </Directory> 
     </Directory> 
    </Directory> 

    <Feature Id='CompleteInstall' Title='My Product' Level='1'> 
     <ComponentRef Id='Binaries' /> 
    </Feature> 
    </Product> 
</Wix> 

ありがとうございます!

答えて

8

私の問題は、サービスが削除されたということではなく、サービス設定を失う原因となった新製品のインストールでした。

私は私のInstallExecuteSequenceブロックにこれを追加し、

<InstallServices>NOT WIX_UPGRADE_DETECTED</InstallServices> 

トリックを行っているようだが助けスティーブンいただきありがとうございます!

1

大きなアップグレードでは、古い製品をアンインストールする手順と新しい製品をインストールする手順の2つの実行シーケンスを実行することを覚えておいてください。あなたの問題は、古い製品のアンインストールに起因すると思われます。古い製品がアンインストールされたときにDeleteServicesアクションを抑制するには、古い製品に "... and not UPGRADINGPRODUCTCODE"条件がありますか?アップグレードを試みる前に、古い製品にその条件を挿入するためのパッチを適用する方法を見つける必要があります。

+0

ありがとう、私はそれを2つの別々のプロセスとは考えていませんでした。 古い製品にはDeleteServicesに 'NOT UPGRADINGPRODUCTCODE'という条件があります。私はどこにでも展開していない、私はまだそれをテストしています。だから私の古い製品は私の新製品と同じですが、私は製品バージョンのビルドを増やします。 また、「Skipping action:DeleteServices」がログに最初に表示され、「Doing action:DeleteServices」が2番目に表示されます。だから私は実際に古い製品のアンインストールが私が望むことをやっていると仮定します。それはサービスを削除する新製品のインストールです。 – Brian

関連する問題