2010-03-29 3 views
2

설치를 취소하는 동안 "Are you sure to uninstall ..."메시지가 표시됩니다.InnoSetup에서 제거가 끝날 때 응용 프로그램을 실행 취소하는 사용자 처리

그런 다음 사용자가 "예"또는 "아니요"를 클릭합니다.

스크립트에서이를 포착 할 수 있습니까?

제거 프로세스가 끝나면 응용 프로그램을 실행해야하기 때문에.

"InitializeUninstall()"중에 응용 프로그램을 실행하면 사용자가 나중에 제거를 취소 할 수 있기 때문에 올바르지 않습니다 (위의 대화 상자는이 기능 후에 표시됨).

"DeInitializeUninstall()"과 동일하게,이 기능은 사용자가 제거를 취소하더라도 계속 실행됩니다.

기본적으로 사용자가 정말로 설치를 제거 할 때 (제거에 동의 함) 응용 프로그램을 실행해야합니다. UninstallNeedRestart() 함수를 설정하려면이 응용 프로그램의 ExitCode를 잡아야합니다.

감사합니다. 이 기능이있는 경우에만 실행됩니다 : 당신이 할 수있는 일

답변

1

는, 그 후

[Code] 

var 
    ApplicationWasUninstalled: Boolean; 

당신의 [코드] 섹션에 전역 변수를 추가 InitializeUninstallProgressForm 절차에 전역 변수를 1 (참고를 설정할 수있다 사용자는 예는 그들이에 이동

procedure InitializeUninstallProgressForm(); 
begin 
    ApplicationWasUninstalled := true; 
end; 

, 당신은 DeinitializeUninstall 기능에 ApplicationWasUninstalled의 값을 확인합니다 응용 프로그램 제거하려면 묻는 메시지가 나타나면 클릭

procedure DeinitializeUninstall(); 
begin 
    if ApplicationWasUninstalled Then Begin 
     //your code here 
    end; 
end; 
+0

왜 부울 값 대신 정수 값을 사용합니까? – jachguate

+0

예, 개선 할 수 있습니다. 나는 서둘렀다. – cosmin

+0

['CurUninstallStepChanged'] (http://www.jrsoftware.org/ishelp/topic_scriptevents.htm#CurUninstallStepChanged) 이벤트 함수는 2004 년 [5.0 릴리스 이후] 이렇게하는 것이 좋습니다. (http : // www. jrsoftware.org/files/is5-whatsnew.htm#5.0.0) – Deanna

1

이 작업을 수행하는 또 다른 방법은 [Run] 및/또는 [UninstallRun] 섹션을 사용하여 설치 후/제거하기 전에 실행 파일을 실행하는 것입니다.

실행 파일을 실행하여 필요한 정리 작업을 수행 할 수 있습니다.

helper exe를 컴파일하여 원하는대로 수행하거나 명령 줄 매개 변수가 제공된 경우 기본 실행 파일에 함수를 추가하십시오. 이노 설치 설명서에

[Run] 
Filename: "{app}\CleanUp.exe"; WorkingDir: "{app}" 

[UninstallRun] 
Filename: "{app}\CleanUp.exe"; Parameters: "/uninstall"; WorkingDir: "{app}"; RunOnceId: "CleanUpApp" 

더 많은 정보 : http://www.jrsoftware.org/ishelp/index.php?topic=runsection

당신은 너무 설치 도우미 EXE를 추가해야 할 때

[Files] 
... 
Source: "C:\myprog\CleanUp.exe"; DestDir: "{app}"; Flags: ignoreversion 
1

당신은 CurUninstallStepChanged() 이벤트 기능에서이 작업을 수행 할 수 있습니다 usPostUninstall 매개 변수와 함께 호출됩니다.

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); 
begin 
    if CurUninstallStep = usPostUninstall then 
    begin 
     // Do your uninstall time code here 
     Exec(ExpandConstant('{app}\CleanUp.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); 
    end; 
end; 
관련 문제