2012-10-22 3 views
3

패키지 체인이있는 WiX Burn을 설치했습니다.WiX CAQuietExec CustomAction 설치를 중단합니다

업데이트는 사용자 개입이 필요없는/수동 모드에서 실행됩니다.

마지막 패키지는 업데이 트에서 실행되며, 목적이 다음과 같은 코드를 사용하여 않는 실행 파일을 실행하는 것입니다 .. 그러나

<!-- Quiet Execution Deferred execution with qtExec--> 
<Property Id="QtExecDeferredExample" Value="&quot;C:\Program Files (x86)\Acme Inc\MyApp.exe&quot;"/> 
<CustomAction Id="QtExecDeferredExample" BinaryKey="WixCA" DllEntry="CAQuietExec" 
       Execute="deferred" Return="ignore" Impersonate="no"/> 

<InstallExecuteSequence> 
    <Custom Action="QtExecDeferredExample" Before="InstallFinalize"/> 
</InstallExecuteSequence> 

, MyApp.exe의 시작하지만, 설치 MyApp.exe가 종료 될 때까지 종료되지 않습니다. 분명히 나는 ​​앱을 시작하고 Installer가 스스로를 끝내기를 원한다.

내가 마무리 설치 한 후 실행하도록에서 CustomAction을 개정 할 수

.. 때문에 다음의

<Custom Action="QtExecDeferredExample" After="InstallFinalize"/> 

: 감사

ICE77: QtExecDeferredExample is a in-script custom action. 
It must be sequenced in between the InstallInitialize action and the InstallFinalize action in the InstallExecuteSequence table 

어떤 아이디어.

업데이트 : BrianJ의 답은 나를 안내합니다. @escist가 물었다 바와 같이, 내 CA의 관련 부분은 다음과 같습니다

다른 곳
<!-- CA To set the property of the process to start--> 
    <CustomAction 
       Id  ="SetProcessToStart" 
       BinaryKey ="WiXCustomActions" 
       DllEntry ="GetProcessToStart" 
       Execute ="immediate" /> 

    <!-- CA to start the process--> 
    <CustomAction 
       Id   ="StartApp" 
       Directory ="APPLICATIONROOTDIRECTORY" 
       ExeCommand ="[PROCESSTOSTART]" 
       Execute ="deferred" 
       Return  ="asyncNoWait"/> 

    </Fragment> 
</Wix> 

(이 과정을 시작했습니다 수 내 애플 리케이션의 숫자가, 그래서 그 경로는 레지스트리에 저장됩니다) ..

<Property Id="PROCESSTOSTART">[Not Set]</Property> 
<InstallExecuteSequence> 
    <!-- Use our Custom Action to set the PROCESSTOSTART property--> 
    <!-- Custom Action to get the value from registry of the App that started the bootstrapper--> 
    <Custom Action="SetProcessToStart" Before="LaunchConditions">NOT Installed</Custom> 

    <!-- NOT installed ensures that the CA does not get fired on an uninstall --> 
    <Custom Action="StartApp" Before="InstallFinalize">NOT Installed</Custom> 
</InstallExecuteSequence> 
+0

이 문제에 대한 해결책을 찾아 주시겠습니까? – escist

답변

1

사용자 지정 작업의 "Return"값을 Return="asyncNoWait"으로 변경하십시오.

+0

이로 인해'CustomAction/@ Return 속성 값인 'asyncNoWait'와 같은 컴파일 오류가 ExeCommand 속성 없이는 지정 될 수 없습니다. ' – escist

+0

답변으로 표시하는 데 조금 늦었습니다. 사과드립니다. @escist - 원래의 질문을 내 작업 사용자 지정 작업으로 업데이트합니다. –