2014-04-18 1 views
2

게임 설치 프로그램을 만들기 위해 Inno Setup을 사용했지만 문제가 발견되었습니다.inno setup : 설치 초기 단계는 6 분 정도 걸립니까?

'Setup_1.0.121.exe'를 실행하면 첫 화면이 표시되기까지 약 6 분이 걸릴 것입니다. 내 설치 전체 크기는 4.76GB이며,이 파일 목록을

  • Setup_1.0.121.exe입니다 :
  • Setup_1.0.121-1a.bin 623,863 바이트 : 1,707,575,872 바이트
  • Setup_1.0.121-1b .BIN : 1,708,200,000 바이트
  • Setup_1.0.121-1c.bin : 1,697,243,193 바이트

나는 깊은 F에서 찾아보십시오/O 읽기 바이트 5,085,307,002 I : 또는이

  • Setup_1.0.121.tmp을 procexp에서 초기 과정에 무슨 일이 일어나고 있는지 알아 보려면 발견 I/O 쓰기 바이트 1,061,076

내 Setup_1.0.121.exe는 초기 단계에서 모든 바이트를 읽습니다. 그것이 왜 그렇게 오래 걸리는지.

내 용의자는 addon 'Isskin'장식용으로 추가합니다.

function InitializeSetup(): Boolean; 
    begin 
     ExtractTemporaryFile('Office2007.cjstyles'); 
     LoadSkin(ExpandConstant('{tmp}\Office2007.cjstyles'), ''); 
     Result := True; 
    end; 

이 문제를 어떻게 해결할 수 있습니까? [Files] 섹션에서 그 큰 파일 후

+0

실제 원인인지 확인하기 위해 스킨을 제거하려고 했습니까? –

+0

음 ... 테스트 .... –

+0

확인. 문제가 해결되었습니다. 내 실수 야. 난 그냥 불필요한 isskin 함수를 제거하고 모든게 잘 작동합니다. –

답변

2

당신이 (당신이 할 가정) SolidCompression를 사용하는 경우, 당신은 임시 파일 중 하나를 나열 (ISSkin.dll 및/또는 Office2007.cjstyles)를 선택한 다음 초기화가 있기 때문에, 너무 오래 걸립니다 installer가 임시 파일보다 먼저 나열된 모든 파일을 추출합니다.

(당신이 delayload 플래그를 사용하지 않은 경우) 스크립팅 엔진에 의해 로딩 추출 된 ISSkin.dll 라이브러리에 의한, 또는 ExtractTemporaryFile 기능으로 Office2007.cjstyles 스킨 파일을 수동으로 추출 될 수

. 심지어는이 기능에 대한 참조가 경고 것 :

솔리드 압축을 사용하는

는 [파일] 섹션 상단 (또는 근처)에서 임시 파일을 나열해야합니다. 솔리드 압축 설치에서 임의의 파일 을 추출하려면 설치 프로그램이 먼저 (메모리의 임시 버퍼에) 모든 이전 파일의 압축을 풀어야합니다. 많은 파일이 [Files] 섹션의 지정된 파일 위에 나열된 경우 은 상당히 지연 될 수 있습니다. 내 가정에 맞았하고, 우리는 이런 일에 스크립트를 재구성 할 수 SolidCompression 그 거대한 데이터 파일 아래에 나열된 임시 파일을 사용하도록 설정 한 경우

:

[Setup] 
AppName=My Program 
AppVersion=1.5 
DefaultDirName={pf}\My Program 
SolidCompression=yes 

[Files] 
; first are listed huge files 
Source: "Setup_1.0.121.exe"; DestDir: "{app}" 
Source: "Setup_1.0.121-1a.bin"; DestDir: "{app}" 
Source: "Setup_1.0.121-1b.bin"; DestDir: "{app}" 
Source: "Setup_1.0.121-1c.bin"; DestDir: "{app}" 
; if SolidCompression is enabled, all the prior files are extracted 
; when any of the the following files is extracted 
Source: "ISSkin.dll"; DestDir: "{tmp}"; Flags: dontcopy 
Source: "Office2007.cjstyles"; DestDir: "{tmp}"; Flags: dontcopy 
... 

당신이이 글을 읽을 경우 신중하게 게시하면 답변은 참조에서 인용 한 것임을 이미 알고 있습니다.거대한 파일의 압축을 피하기 위해 모든 임시 파일을 [Files] 섹션 위에 나열하면됩니다. 따라서 위 스크립트는 다음과 같이됩니다.

[Setup] 
AppName=My Program 
AppVersion=1.5 
DefaultDirName={pf}\My Program 
SolidCompression=yes 

[Files] 
; first are listed temporary files 
Source: "ISSkin.dll"; DestDir: "{tmp}"; Flags: dontcopy 
Source: "Office2007.cjstyles"; DestDir: "{tmp}"; Flags: dontcopy 
; the huge files are now extracted just when they are needed 
Source: "Setup_1.0.121.exe"; DestDir: "{app}" 
Source: "Setup_1.0.121-1a.bin"; DestDir: "{app}" 
Source: "Setup_1.0.121-1b.bin"; DestDir: "{app}" 
Source: "Setup_1.0.121-1c.bin"; DestDir: "{app}" 
...