2012-03-22 2 views
8

나는 일종의 불행에 처했습니다. 설치 프로그램을 설치하고 트레이 아이콘 앱 (일반 .exe)을 시작합니다.제거하기 전에 WiX 닫기 응용 프로그램 - 열려있는 응용 프로그램 메시지 닫기

이 작업은 정상적으로 작동하지만 이제는 사용자에게 앱을 수동으로 종료하라는 UI가 나타나기 전에 해당 앱을 중지하려고합니다. 루틴을 제거하면 트레이 아이콘이 제거되지만 프로세스가 계속 실행 중입니다.

나는 제거하기 전에 (또는 동안)

<CustomAction Id="CloseTrayApp" ExeCommand="-exit" FileKey="TrayApp" Execute="immediate" Return="asyncNoWait" /> 

<InstallExecuteSequence> 
    <Custom Action="CloseTrayApp" Before="InstallValidate" /> 
</InstallExecuteSequence> 

을 응용 프로그램을 닫으려면이 사용자 지정 작업을 적용하지만 "실행중인 모든 응용 프로그램을 닫습니다"대화는 여전히 팝업,하지만 난이 내 문제를 해결할 수 있다고 생각했다.

나는 이미 CloseAction을 사용하려고 시도했지만, 물건을 컴파일하는 동안 오류 때문에 사용하고있어.

xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 

가 어떻게 실행까지 저런 애 대화 상자 창을 방지하고 본 사용자 지정 작업을 트리거 할 수 있습니다 : 그것은 WixUtils 네임 스페이스가 나타나지 않을 수 있지만 내가 그것을가 있음을 확인 더블 있다고?

답변

7

또한 WixUtilExtension.dll에 대한 참조를 추가해야합니다. Visual Studio/Votive를 사용한다면 참조를 추가하고 [ProgramFilesFolder] Windows Installer XML v3.5 \ bin에서 DLL을 선택하십시오.

Using Standard Custom Actions

가 CloseApp 사용자 지정 작업이 원하는 제한이 있습니다 :

candle.exe yourfile.wxs -ext %full path to WixUtilExtension.dll%' 
light.exe yourfile.wixobj -ext %full path to WixUtilExtension.dll% –out yourfile.msi yourfile.wixout' 

더 많은 정보는에서 찾을 수 있습니다 그렇지 않으면 컴파일러 및 링커 확장을 사용할 수 있도록해야 귀하의 신청서를 "종료"하지 마십시오. 그것은 정중하게 귀하의 응용 프로그램 WM_CLOSE 메시지를 보내고 귀하의 trayapp까지 수신 및 종료와 함께 그 메시지를 처리합니다.

+0

사용자 지정 동작을 사용하고 "-exit"와 같은 인수를 전달하는 다른 방법은 없습니까? 내 프로그램이 이에 반응하고 자체적으로 종료되기 때문입니다. 전에 Before = "InstallValidate"명령문에 문제가있을 수 있다고 생각했습니다. 이전 상황에서 deinstall 루틴을 연결할 수 있습니까? – inva

+0

죄송합니다. 설명은 읽었지만 코드는 읽지 않았습니다. http://wix.sourceforge.net/manual-wix3/util_xsd_closeapplication.htm –

+0

여전히 제대로 작동하지 않습니다 ... 트레이 아이콘이 보이지 않게되지만 트레이 응용 프로그램 프로세스가 아직 실행 중입니다. :(나는 다음과 같은 closeapp 문을 사용하고있다. inva

관련 문제