2013-01-16 2 views
3

외부 응용 프로그램이 종료 코드 5를 반환하면 어떻게 든 강제로 재부팅 할 수 있습니까?외부 응용 프로그램의 반환 코드를 기반으로 강제로 재부팅하는 방법은 무엇입니까?

[Run] 
Filename: {app}\e.exe; Parameters: Z; Description: {cm:ALaunchProgram,{#ti}}; 

실행 섹션과 함께 할 수없는 경우 실행 파일을 사후 단계에서 실행하도록 ShellExec을 호출 할 수 있습니까?

+0

외부 설치 프로그램에서 신호를 보내면 다시 시작해야한다고 생각합니다. Inno Setup은 'FinishPage'에 그러한 메시지를 표시합니다. 기본값은'yes' ... 설명 : yes로 설정하면 [Run] 섹션에서 실행 된 프로그램이 대체 할 파일을 대기열에 둡니다. 다음 재부팅 (MoveFileEx를 호출하거나 wininit.ini를 수정하여) 설치 프로그램은이를 감지하고 설치가 끝난 후 컴퓨터를 다시 시작하라는 메시지를 표시합니다. – RobeN

답변

6

실행 파일이 Inno가 재부팅을 요구할 때 자동으로 감지 할 수있는 작업 (예 : 재부팅시 파일을 바꾸거나 삭제하도록 예약)을 수행하지 않는 한 [Run] 항목에서 재부팅을 트리거 할 수 없습니다. 이는 RestartIfNeededByRun 설정을 통해 제어되며 기본값은 yes입니다.

반환 값을 캡처하여 흥미로운 것을 원하면 [Code]을 사용해야합니다. 설치 후해야하는 경우 제안 된 장소는 CurStepChanged(ssPostInstall)입니다 (실제로는 [Run] 항목이 정상적으로 수행 된 후에 발생합니다).

이 시점에서 Exec을 사용하여 프로그램을 실행하고 종료 코드를 확인하고 선택적으로 재부팅할지 여부를 나타내는 전역 변수를 설정할 수 있습니다. 그런 다음 NeedRestart 이벤트 기능에서 해당 값을 사용할 수 있습니다.

그러나이 경로로 이동하기 전에 실행하려는 것이 실제로 일종의 필수 구성 요소 인 경우이를 대신 PrepareToInstall에서 설치하는 것이 좋습니다. 이 예제는 Inno에 포함되어 있으며, 필수 설치와 기본 애플리케이션 설치 사이의 재부팅을 트리거하는 예를 포함합니다.

관련 문제