InnoSetup을 사용하다보면 /silent 인자로 실행시키지 않고 설치 프로그램을 실행할 경우 모든 페이지를 스킵하고 ( 설치를 진행하는 페이지는 제외 ) 맨 마지막 페이지만 따로 보여준다던지 그런식으로 커스텀하게 설치 프로그램을 제작해야 할 경우가 있습니다.
그런데 ShouldSkipPage 에서 모든 페이지를 스킵하고 wpFinish만 보이도록 할려고 하면 wpReady는 스킵이 되지 않더군요.
아무리 찾아봐도 InnoSetup 스크립트내에서는 해결방법이 없다라는 것을 알았습니다.
결국엔 소스코드를 수정해야 하는데 다음과 같은 부분을 수정하면 해결됩니다.
Wizard.pas 함수에서..
아래 코드를 주석처리합니다.
function TWizardForm.ShouldSkipPage(const PageID: Integer): Boolean;
begin
if (PageID = wpReady) and not Visible then begin
Result := False;
Exit;
end;
그리고 여기까지 되면 wpReady 페이지는 보이지 않는데 문제는 설치가 진행되는 페이지 ( 프로그래스바가 생기면서 설치진행을 알림 ) 도 화면에 안 보이는 문제가 있습니다.
이건 개인취향(?)에 따라 다르기 때문에 저에 경우에는 설치중인 페이지가 보이길 원하므로..
procedure TWizardForm.NextButtonClick(Sender: TObject); 함수에서
wpInstalling: begin 조건문안에 다음과 같이 설치중인 페이지가 보이도록 수정하면 됩니다.
if (Visible = False) and (InstallMode = imNormal) then
begin
WizardForm.show;
end
그리고 InnoSetup을 재컴파일하면 완료.
'인터넷/IT > 프로그래밍' 카테고리의 다른 글
GetNativeSystemInfo 함수와 레지스트리키 이용한 윈도우 버전 및 CPU 정보 읽어오기 (0) | 2014.03.10 |
---|---|
InnoSetup에서 프로그램 실행 시 창이 뒤로 가는 경우 (0) | 2014.03.09 |
jvcl - TJvXPMenuItemPainter 에 짜증나는 버그 (0) | 2014.03.07 |
Overbytes ics 의 THttpCli 컴포넌트 사용 시 주의점 (0) | 2014.03.05 |
class EIcsLibeayException with message Unable to load LIBEAY32.DLL (0) | 2014.02.21 |
IE9 이상으로 브라우저를 업그레이드하거나, 크롬, 파이어폭스 등 최신 브라우저를 이용해주세요.