2014-02-06 4 views
1

, 내가하고자하지에 서비스를 시작하지만 하지 업그레이드 할 때. ServiceControl Element처럼 미세한 입도를 허용하지 않는 것 같습니다.윅스 :이 때만</em></strong> 새로 설치 자동으로 <strong><em>를 시작하는 내 설치 프로그램으로 설치되는 서비스를 가지고 설치하지만, 주요 업그레이드에 특정 이유로

나의 현재 코드는 다음과 같습니다이를 달성 할 수있는 방법이

<ServiceControl Id="StartService" Start="install" Stop="both" Remove="both" Name="MyService" Wait="no"/> 

있습니까? 아마도 ServiceControl 요소 대신 CustomAction을 사용하고 있을까요?

답변

0

당신은 예를 들어, StartServices 사용자 정의 aciton에 조건을 넣어 시도 할 수 :이 정확한 조건, 특히 UPGRADINGPRODUCTCODE을 테스트하지 않았습니다

<InstallExecuteSequence> 
    <StartServices Sequence="5900"> 
     <![CDATA[VersionNT AND NOT UPGRADINGPRODUCTCODE]]> 
    </StartServices> 
    </InstallExecuteSequence> 

,하지만 난 (같은 사용자 지정 작업에 다른 조건을 사용하여 StartServices) 내 목적을 위해 완벽하게 작동합니다.

+0

컨디셔닝 표준 작업은 작업의 영향을받는 설정의 모든 항목에 영향을줍니다. 표준 작업에는 권장되지 않습니다. –

1

이전 MSI 버전을 이미 선적 한 경우 STARTServices 작업에 조건을 추가하기에는 너무 늦습니다. UPGRADINGPRODUCTCODE는 업그레이드되는 이전 설정에서 사용되며 최신 들어오는 설정에서는 사용되지 않습니다. 어쨌든, 업그레이드 중에는 새로운 업그레이드 설치의 조건이 필요합니다. 왜냐하면 이것은 실제로 서비스를 시작하는 것이므로 이전 설치가 제거되는 것이 아니기 때문입니다. 이전 버전이 감지 될 때 설정되는 새 설치에 대한 업그레이드 정보에서 "OLDERPRODUCTFOUND"또는 이와 동등한 속성이 필요하며이를 조건에 사용하십시오. StartServices는 하나의 서비스가 아닌 모든 서비스에 적용되므로 모든 서비스에 대해이 동작을 원하지 않으면 다른 솔루션이 필요합니다.

+0

방금 ​​업그레이 드를 테스트하고 UPGRADINGPRODUCTCODE를 설정했는데 이전 버전이 아닌 새 설정으로 설정했습니다. UPGRADINGPRODUCTCODE는 이전 버전이 있고 새 설치에서 CA RemoveExistingProducts가 실행될 때 설정됩니다. – IlirB