2014-04-16 8 views
0

wix에서 설치 프로그램을 제거 할 때 사용자 지정 작업을 실행하려고합니다. 완벽하게 작동하지만 사용자 지정 action.Latter시에 cmd 프롬프트의 시작 화면을 표시하고 있지만 CAexietExec로 시도했지만 설치 프로그램을 설치하고 오류가 발생했습니다. (CAQuietExec : 오류 0x80070057 : 명령 줄 데이터를 가져 오지 못했습니다.) 내가 사용하고wix에서 자동 모드로 사용자 지정 작업을 실행하는 방법은 무엇입니까?

명령은 다음과 같습니다

<Fragment> 
<Property Id="ModifyOutlookRegInitSign_14" Value="&quot;[SystemFolder]reg.exe&quot; ADD &quot;HKCU\SOFTWARE\Microsoft\Office\14.0\Outlook\Security&quot; /v InitSign /t REG_DWORD /d 0 /f"/> 
    <CustomAction Id="ModifyOutlookRegInitSign_14" BinaryKey="WixCA" DllEntry="CAQuietExec" 
       Execute="deferred" Return="check" /> 
    <InstallExecuteSequence> 
     <Custom Action="ModifyOutlookRegInitSign_14" Before="InstallFinalize"></Custom> 
    </InstallExecuteSequence> 

    </Fragment> 

답변

4

는 즉시 사용자 지정 작업 인 경우, 값으로 명령 줄을 포함하는 속성의 이름이 Id="QtExecCmdLine"이 있어야합니다. 다른 유형의 사용자 지정 작업의 경우 Quiet Execution Custom Action을 읽습니다.

+0

을 나는 연기와 함께 즉시 교체하는 경우, 동일한 오류가 발생했습니다. – 123r789

+0

물론. 연기 된 사용자 지정 작업의 경우 추가 단계를 추가하고 다른 단계 이름을 지정해야합니다. 제공된 [Quiet Execution Custom Action] 링크 (http://wixtoolset.org/documentation/manual/v3/customactions/qtexec.html)에서 찾을 수 있습니다. 속성의'Id' 속성의 이름을'QtExecCmdLine'으로 변경 했습니까? 즉각적인 CA의 경우 ** 이와 같은 이름이 지정됩니다. – taffit

+0

내 요구 사항은 여러 사용자 지정 actions.How QtExecCmdLine 속성 값을 여러 명령을 배치 할 수 정의하는 것입니다?. 그래서 Execute = deferred를 사용하여 다른 사용자 정의 액션에 대해 다른 속성 ID를 정의 할 수 있습니다. 그러나 위와 같은 오류가 발생합니다. – 123r789

1

제거 중에 HKCU를 업데이트하려고하는 것 같습니다. 이는 Windows Installer가 기본적으로 그렇게 할 수있는 기능을 지원하지 않기 때문일 수 있습니다.

그러나 제안 된 솔루션은 여러 가지면에서 부족합니다. 주로 롤백을 지원하지 않으며 다른 사용자 프로필 정리를 지원하지 않습니다.

이 레지스트리 항목을 HKCU에서 구현해야합니까? HKLM에서 구현 될 수 있습니까?

+0

제거 중에 HKCU를 업데이트하는 것이 일반적인 사용자 지정 작업으로 작동합니다. 자동 모드에서이를 수행하려고하면 오류가 발생합니다 (CAQuietExec : 오류 0x80070057 : 명령 줄 데이터를 가져 오지 못함). – 123r789

+0

오류는이 방향을 가리키고 있습니다 : 명령 행을 포함하는'QtExecCmdLine' 속성을 찾을 수 없습니다. – taffit

0

이 같은 자동 프로세스를 죽일 사용자 지정 작업을 만들었습니다

<!-- WixQuietExecCmdLine specify the cmd to be executed --> 
<Property Id="WixQuietExecCmdLine" Value='"[WindowsFolder]System32\TaskKill.exe" /F /T /IM MyApp.exe'/> 

<!-- From WiX v3.10, use WixQuietExec --> 
<CustomAction Id="MyAppTaskKill" BinaryKey="WixCA" DllEntry="WixQuietExec" Execute="immediate" Return="ignore"/> 

<!-- trigger the custom action --> 
<InstallExecuteSequence> 
    <Custom Action='MyAppTaskKill' Before='InstallValidate'></Custom> 
</InstallExecuteSequence> 

현재 가능한 구성 조합에 대한 더 많은 정보가 있습니다 http://wixtoolset.org/documentation/manual/v3/customactions/qtexec.html