2017-09-27 9 views
0

업그레이드 도중 새 파일을 다시 가져 오는 installFiles 전에 특정 파일을 제거하는 사용자 지정 작업이 있습니다. 나는 두 번 호출되는 작업을 알 수 있습니다. 1.Get을 호출하고 파일을 삭제합니다. 2. InstallFiles는 새 파일을 다시 복사합니다. 3.Again이 호출되어 파일을 삭제합니다 (발생하지 않아야 함). 어디 선가 업그레이드 시나리오에 대해이 사용자 지정 작업이 주내 호출되는 것을 읽기가 두 번째로 호출하기 방지하는 방법을 알고 싶어요업그레이드 중에 Wix 사용자 지정 작업이 두 번 실행 되나요?

<InstallExecuteSequence> 
      <RemoveExistingProducts After="InstallFinalize" /> 
      <Custom Action="NEWER_VERSION_PRESENT" After="FindRelatedProducts"> 
     NEWER_VERSIONS 
      </Custom> 
      <Custom Action="DeleteourFiles" Before="InstallFiles"></Custom> 
</InstallExecuteSequence> 

- 같은

내 사용자 지정 작업 보인다. 기본적으로 이전 버전의 특정 파일을 삭제하기 전에 내 사용자 지정 작업을 수행하여 새 파일을 넣기를 원합니다. 어떤 조건을 사용해야합니까?

답변

1

이전 설치가 제거되고 파일이 삭제됩니다.

<RemoveExistingProducts After="InstallFinalize" /> 

설치 프로그램을 제거한 후 InstallFinalize를 실행 한 후 제거하려면 이전 설치 프로그램을 예약합니다.

<Custom Action="DeleteourFiles" Before="InstallFiles"></Custom> 

아무런 조건이 없으므로 설치 또는 제거 또는 업그레이드 중 언제든지 설치가 실행될 때마다 항상 실행됩니다.

당신이 그것을 설치 업그레이드하는 동안 실행하려는 경우 당신은 명시 적으로 업그레이드하는 동안

<Custom Action="DeleteourFiles" Before="InstallFiles">NOT UPGRADINGPRODUCTCODE</Custom> 

를 추가해야합니다 제거 할 때 당신을 설치는 이미 설치 (이전 버전) 설치 프로그램을 실행하고 UPGRADINGPRODUCTCODE을 정의합니다 달렸다 자체 제품 코드로. 따라서 UPGRADINGPRODUCTCODE가 정의되어 있지 않을 때만이 사용자 지정 동작을 실행한다고 말하면 업그레이드 설치에서 한 번 업그레이드하고 이전 버전에서는 업그레이드하지 않은 다음 제품을 명시 적으로 제거 할 때 실행합니다.

그래도 작성한 방법 때문에 이전에 출시 된 모든 설치를 업그레이드하는 데 여전히 문제가 발생합니다. 기존 제품 제거 일정을 변경하여이 문제를 해결할 수 있습니다.

<RemoveExistingProducts After="InstallInitialize" /> 

이 대신 말의 시작 이전 버전을 제거합니다 사용하는 경우 어떤 배 DeleteourFiles 사용자 지정 작업을 실행 주위에 작동합니다.

언급하는 또 다른 것은 내가 InstallInitialize 후 RemoveExistingProducts 일정을 변경하면 나는 아직도 일반적으로 사용자가 명시 적으로 당신이 MajorUpgrade 태그

+0

이 스케줄링을 정의합니다

일반적으로

InstallExecuteSequence에서 태그에 "RemoveExistingProducts"를 예약하지 않는다는 것입니다 사용자 지정 작업을위한 조건을 제공해야합니까? –

+0

올바른 동작이므로 그렇게해야합니다. 현재 설치되어있는 제품 버전은 업데이트 된 조건을 가져 오지 않으므로 RemoveExistingProducts를 다시 예약해야합니다. 그러면 제거 할 때 파일이 계속 제거됩니다. –