2013-05-06 1 views
9

WiX 설치 프로그램의 주요 업그레이드에서 서비스의 설정 (자격 증명 및 기타 옵션)이 손실되지 않도록하려고합니다. 나는 조언 here을 따라, 각각의 업그레이드에 내 자격 증명 및 기타 서비스 설정을 잃고, 나는WiX의 주요 업그레이드에서 서비스가 설정을 잃지 않도록하십시오.

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

를 사용하기 위해 노력하고있어하지만 내 서비스는 아직 업그레이드에 다시 설치되고있다.

로그에 내 상태가 한 번만 적용되는 것처럼 보입니다. 나는

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 

를 참조하십시오. 아무도 내가 그 두 번째 것을 억압 할 수있는 방법을 말해 줄 수 있습니까?

저는 WiX 도구 세트 3.7을 사용하고 있습니다. 여기 내 코드가 있습니다. 분명히 제거되었습니다.

<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

중요한 업그레이드에서는 이전 제품을 제거하고 새 제품을 설치하는 두 가지 실행 순서를 실행해야합니다. 문제가 이전 제품을 제거한 것으로 판단됩니다. 이전 제품을 제거 할 때 DeleteServices 동작을 억제하기 위해 이전 제품에 "... and not UPGRADINGPRODUCTCODE"조건이 있습니까? 업그레이드를 시도하기 전에 이전 제품을 패치하여 해당 조건을 삽입하는 방법을 찾아야합니다.

+0

감사합니다. 두 개의 개별 프로세스로 생각하지 않았습니다. 이전 제품에는 DeleteServices에서 'UPGRADINGPRODUCTCODE'조건이 없습니다. 아직 배포하지 않았지만 아직 테스트 중입니다. 따라서 이전 제품은 제품 버전 빌드를 늘리는 것을 제외하고는 새 제품과 동일합니다. 또한 "건너 뛰기 작업 : DeleteServices"가 로그에서 첫 번째로 표시되고 "수행중인 작업 : DeleteServices"가 두 번째로옵니다. 따라서 이전 제품의 설치 제거가 원하는대로 수행되고 있다고 가정합니다. 서비스를 삭제하는 것은 새 제품의 설치입니다. – Brian

관련 문제