2014-10-30 5 views
1

wix 설치 프로그램을 사용하여 덮어 쓰기 (읽기 : 기존 레지스트리 값 수정), 새 레지스트리 추가 등을 수행합니다. 제거시 원래 상태 (수정 된 항목)로 되돌릴 필요가 있습니다. 이것은 윅스에 의해 지원되지 않으므로 나는 (내가 읽었을 때) reg import을 사용하여 .reg 파일을 실행할 exe를 실행하고 싶습니다. 이 사이트에 따르면 : http://www.installsite.org/pages/en/isnews/200108/index.htm 내 사용자 지정 작업은 After="InstallFinalize"을 실행해야합니다. 왜냐하면 wix 롤백은 내 레지스트리 가져 오기를 (롤백의 일부로) 삭제할 것이기 때문입니다. 그래서 본질적으로 그것은 다음과 같습니다 : Installer는 reg 값을 수정하고, 제거 프로그램은 모든 변경된 레지스트리 변경 사항 (롤백의 일부)을 삭제합니다. 내 exe가이를 복원합니다. Wix - 설치 제거 후 installfinalize 후 exe를 실행하는 방법?

그래서 나는 등 http://wixtoolset.org/documentation/manual/v3/customactions/qtexec.html

  <Component Id="registry" Guid="*"> 
       <File Id="regexe" Source="RegistryRollback.exe"/> 
       <File Id="regfile" Source="Reg_rollback.reg" /> 
      </Component> 

<Property Id="LaunchRegExe" Value="[#regexe]" /> 
<CustomAction Id="LaunchRegExe" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="check" Impersonate="no"/> 

<Custom Action='LaunchRegExe' After='InstallFinalize'>Installed AND NOT UPGRADINGPRODUCTCODE</Custom> 

높은 권한을 가진 그의 시작하는 방법을 내 EXE에 따라했지만 나는 Error 19 ICE77: LaunchRegExe is a in-script custom action. It must be sequenced in between the InstallInitialize action and the InstallFinalize action in the InstallExecuteSequence table C:\Merlin\Main\Demo\KioskDemoSetup\nw_setup\nw.wxs 250 1 nw_setup

여러분의 도움에 감사드립니다 얻을!

+0

전체 그림을 여기에서 볼 수 없습니다 ... 레지스트리 값을 어디에서 수정합니까? 변경 사항을 되 돌리는 롤백 동작에 대해 어디에서 걱정합니까? 우리가 여기서 보았던 것에서,'InstallInitialize'와'InstallFinalize' 사이에서 지연된 동작이 실행되어야한다는 사실 외에도, 당신의 동작은 당신이 그것을 취소 할 때 다르게 동작하는 언인스톨에서만 실행될 것입니다. 귀하의 exe는 설치가 완료되기 전의 언젠가는 지연된 상황에서만 제거시 실행된다는 것을 의미합니다. –

답변

2

According to this site: http://www.installsite.org/pages/en/isnews/200108/index.htm my custom action has to run After="InstallFinalize" because the wix rollback would delete my registry import (as part of the rollback).

이 사이트에서 언급 된 위치를 지정할 수 있습니까? 나는 그것을보고 있지만 귀하의 행동이 After="installFinelize"과 함께 실행되어야하는 이유를 찾을 수 없습니다. 이 언급 무엇

, 당신의 오류에 대한 이유 어느

Deferred, rollback and commit custom actions can only be placed between InstallInitialize and InstallFinalize

이다 : 당신은 연기 조치를해야하지만 InstallFinalize를 후에게 를 실행합니다.

설치 (또는 제거)가 중단 된 경우 (예 : 사용자가 취소 한 경우) 롤백 스크립트가 실행됩니다. 나는 당신이 단순히 Before="InstallFinalize"으로 당신의 행동을 실행할 수 있다고 생각합니다.

+0

설치 실행 순서에 있습니다. "이 두 번째 단계는 대상 컴퓨터가 수정되는 즉 파일 복사, 레지스트리 항목 작성 등입니다. 롤백과 관련하여 설치 프로그램에서 수행 한 모든 변경 (예 : 설치 폴더 제거, 설치 중에 레지스트리에 수행 된 변경 사항 롤백 (읽기 : 삭제))이 롤백되었습니다. 따라서 해당 사이트에 따르면 이후에 exe를 실행해야한다면 내 exe가 레지스트리를 wix에 의해서만 삭제되도록 복원해야하기 때문입니다. 아니면 내가 여기서 뭔가를 오해하니? – sceiler

+0

기존 레지스트리 항목을 덮어 쓰거나 설치 프로그램에서 만든 항목입니까? 첫 번째 경우에는 기본 제거로 제거 할 수 있는지 확실하지 않습니다 ... 그럼에도 불구하고 레지스트리 제거 단계 후에 스크립트가 실행되도록하려면 'After ='를 사용하면됩니다. RemoveRegistryValues'' (하지만 지연된 작업을 실행할 수 없기 때문에 설치를 완료하기 전에해야합니다). 불행히도 지금은 테스트 할 수 없지만 문서를 기반으로하면 작동합니다. –