2010-04-01 3 views
1

내 응용 프로그램 MyApp.exe를 보육하는 서비스 인 MyService.exe가 있습니다.이 응용 프로그램은이 응용 프로그램이 충돌하거나 기타 문제가 발생하면 응용 프로그램을 시작합니다. 기본적으로 서비스가 중지되면 (서비스에 의해) 응용 프로그램이 중지되고 서비스가 시작되면 응용 프로그램이 서비스에 의해 시작됩니다. 내 서비스를 중지하기 위해제거하기 전에 서비스 및 babysited 응용 프로그램 중지

하고 내 응용 프로그램에서 내가 뭘 제거 :

<ServiceControl Id='MyServiceControl' Name='MyServiceForTest' Start='install' Stop='uninstall' Remove='uninstall'/> 

을하지만 모든 것을 제거 할 때 오류 메시지가 : "설치 파일 또는 서비스를 업데이트해야합니다 시스템을 실행하는 동안 업데이트 할 수 없습니다. 계속 진행하려면 설치를 완료하기 위해 재부팅해야합니다. " 제거 프로그램을 실행하기 전에 수동으로 서비스를 중지하면 내 서비스와 응용 프로그램이 더 이상 실행되지 않으므로이 메시지가 표시되지 않습니다.

로그 파일에서 나는 이것이 InstallValidate에서 발생하고이 메시지가 b/c가 실행중인 MyApp.exe임을 확인했습니다.

설치 관리자가 실행중인 응용 프로그램을 검사하면 MyService.exe와 MyApp.exe가 모두 실행 중임을 확인하고 MyService.exe가 지시에 따라 설치 제거 프로그램 자체에 의해 중지 될 수 있음을 감지하지만 MyApp.exe에 대해서도 알지 못합니다. 서비스가 중단되면 재부팅 메시지가 표시 될 것이므로이 서비스도 종료됩니다.

제거 프로그램에서 MyApp.exe를 닫을 수 없으며 서비스가 다시 시작합니다.

제거/업그레이드를 수행하기 전에 사용자가 재부팅하거나 서비스를 수동으로 중지 할 필요가 없도록이 문제를 어떻게 해결할 수 있습니까? 또한, MyService와 MyApp 코드를 더 이상 변경할 수 없으므로 설치자 (un)에서만이 작업을 수행해야합니다.

TIA, 비비안

나는 당신의 설치 물러나하고 응용 프로그램을 종료하도록 지시 할 수있는 서비스의 메커니즘 노출 될 수

답변

0

. 이 방법은 Windows Installer 비용이 잠겨있는 파일을 찾지 못하면 아무 것도 찾지 않습니다.

+0

마찬가지로 서비스에서 코드를 변경할 수 없습니다. "net stop MyService"를 호출하는 InstallValidate 전에 실제로 사용자 지정 작업을 가질 수 있습니까? 이게 맞을까요? 이 방법으로 설치 프로그램이 사용중인 파일을 찾기 전에 서비스를 중지합니다. –

+0

잘 해봐. 개발자가 자신의 코드가 '완료되었습니다'라고하고 설치 프로그램이 '작동하게 만들면'해야한다고 말하면 일반적으로 잘 끝나지 않습니다. –

관련 문제