2017-01-10 8 views
0

Inno Setup 스크립트 내에서 사용자 정의 VB 애플리케이션을 설치하는 VB 실행 프로그램을 실행합니다.Inno Setup - 서브 인스톨러가 생성 한 디렉토리 트리를 대체하십시오.

일단이 작업이 완료되면 VB 설치가 끝난 후 VB 설치 실행 파일로 만든 파일과 폴더를 덮어 쓰려면 일부 파일을 복사해야합니다. 이 '업데이트 된'파일은 이미 [Files] 섹션의 Inno Setup에 의해 임시 폴더에 저장되고 해당 폴더에 대상 PC에 성공적으로 배포됩니다.

문제는 내가 시도한 것에 관계없이 어떤 이유로 든 FileCopy 명령이 무시 된 것입니다.

// 실행해야 VB 설치 실행 파일을 복사하고 VB 설정이 실행 된 후 VB 설정을 업데이트 할 파일을 복사

[Files] 
    Source: "C:\##Deploy\Titan\LABORATORY\BTLABSETUP.msi" ; DestDir: "{app}\Temp" ; Components: Laboratory ; Permissions: users-full 
    Source: "C:\##Deploy\Titan\LABORATORY\BetolinkLAB\*.*" ; DestDir: "{app}\Temp" ; Components: Laboratory ; Permissions: users-full ; Flags: ignoreversion recursesubdirs 

:

그래서 내가해야 할 단계는 다음과 같습니다 그때 (OK 실행)을 VB 설정

[Run] 
    Filename: "msiexec.exe"; Parameters: "/i ""{app}\Temp\BTLABSETUP.msi" ; AfterInstall: CopyAllFiles 

그리고 즉시 VB 실행 AFTER를 실행, 나는 복사 한 파일을 덮어 쓰기해야합니다.

그래서 지금 내가 필요로하는 대상 컴퓨터, 파일 및 Temp 폴더에 복사 된 폴더를 VB 실행 파일에 의해 만들어진 동일한 디렉터리 구조에있는 파일을 바꿉니다 복사 할 수 있습니다.

예를 들어 temp \ Configuration 폴더에서 모든 파일을 가져 와서 {app} \ Configuration 폴더에있는 동일한 파일을 덮어 씁니다. 나는했습니다, CopyAllFiles를 호출이 있습니다 임시 소스 CopyAllFiles

procedure CopyAllFiles; 
begin 

    MsgBox('About to Copy the files', mbInformation, MB_OK); 

    FileCopy('{app}\Temp\*.*'       , '{app}\*.*'       , False) 
    FileCopy('{app}\Temp\Configuration\*.*'    , '{app}\Configuration\*.*'   , False) 
    FileCopy('{app}\Temp\Configuration\Korinthos\*.*' , '{app}\Configuration\Korinthos\*.*' , False) 
    FileCopy('{app}\Temp\Configuration\Metamorfosi\*.*' , '{app}\Configuration\Metamorfosi\*.*', False) 
    FileCopy('{app}\Temp\Manual\*.*'      , '{app}\Manual\*.*'     , False) 
    FileCopy('{app}\Temp\ScriptsUpload\*.*'    , '{app}\ScriptsUpload\*.*'   , False) 
    FileCopy('{app}\Temp\Temp\*.*'      , '{app}\Temp\*.*'      , False) 
    FileCopy('{app}\Temp\Templates\*.*'     , '{app}\Templates\*.*'    , False) 
    FileCopy('{app}\Temp\Temporary\*.*'     , '{app}\Temporary\*.*'    , False) 
end; 

모든 파일 및 폴더 내 코드입니다 : 나는 내가 afterinstall을 발견 샘플에서 사용되는 이유

입니다 그 (것)들을 검사했다, 아무것도 놓치고있다. 또한 대상에 대해 와일드 카드없이 시도했지만 어느 쪽도 작동하지 않았으므로 CurStepChanged에서 시도했지만 그다지 좋지는 않았습니다.

팝업 메시지 상자에서 VB 실행 파일 다음에 코드가 CopyAllFiles 프로 시저에 있지만 아무 것도 발생하지 않는다는 것을 알고 있습니다.

어떤 도움이나 해결 방법은 환영보다 더 많은 것, 매우 늦게 이미 클라이언트에 대해이 설정을 수험하고 필요 붙어은 ...

당신에게
야 니스

+0

'FileCopy'는 와일드 카드를 지원하지 않습니다. 이 함수는 단일 파일을 새 대상에 복사합니다. 이 경우 루프와 함께 폴더에있는 파일을 반복해야합니다. [Inno Setup - FileCopy는 경로명에 와일드 카드 문자를 사용합니다.] (http://stackoverflow.com/questions/13688882/inno-setup-filecopy-use-wildcard-character -in-pathname). 또는'Checks.' 및/또는'BeforeInstall' 함수 ('BeforeInstall'가 VB 설치를 트리거 할 수있는 곳)를 추가하여'[Files]'섹션에'external' 소스로 넣을 수 있습니다. – RobeN

답변

1

FileCopy이 하나를 복사 할 수 있습니다 감사 파일 만.

전체 디렉터리 트리를 복사하려면
Inno Setup: copy folder, subfolders and files recursively in Code section을 참조하십시오. [Files] 부분이 처리되기 전에 귀하의 경우


비록 , 그것은 더 적절한 (및 구현하기 쉽게) 프로그래밍 .msi를 설치하지 않을 것이다?그런 다음 Files 섹션에 {app}에 직접 파일을 설치하십시오.