2011-11-18 2 views
10

32/64 비트 설치에서 소스 폴더 (및 대상 폴더)를 동적으로 파생시키고 싶습니다. 그렇다면 어떻게 Inno 설정의 [Files] 섹션에서 지정할 수 있습니까? 다음은 컴파일 오류를 제공합니다 : ->Inno Setup의 [Files] 섹션에서 "code"를 어떻게 사용합니까?

[Files] 
Source: {#MySourcePath}\{code:GetSourceLibFolder}\*.jar; DestDir: {code:GetAppDir}\lib\; 

내가 코드 섹션에 정의 된 GetSourceLibFolder()GetAppDir() 기능을 가지고있다. 함수는 매우 간단하며 변수 만 반환합니다.

function GetSourceLibFolder(Param: String): String; 
begin 
    Result:= SourceLibFolder; 
end; 

function GetSourceBinFolder(Param: String): String; 
begin 
    Result:= SourceBinFolder; 
end; 

감사합니다!

+1

우리는 코드를'[Code]'로부터 호출하여 InnoSetup 스크립트의 다른 장소에서 사용할 수 있을지 확신하지 못합니다. '# define' 문을 사용하여 함수를 적용하는 문자열을 만드는 방법은 어떻습니까? (예 : [http://stackoverflow.com/questions/2329979/can-the-setup-filename-be-derived-from-the-executable -file-version-number] (http://stackoverflow.com/questions/2329979/can-the-setup-filename-be-derived-from-the-executable-file-version-number)) –

+0

이 원본의 위치 lib 폴더 : InnoSetup 스크립트의 기본 폴더에 상대적인 소스 폴더에 있습니까? '{app}'만 사용할 수있는 이유는 무엇입니까? 예를 들어, InnoSetup 스크립트 파일이'. \'폴더에 있고 당신의 jar 라이브러리가'. \ install \ lib'에 있고 그것들이 당신의 응용 프로그램 폴더'{app}'의'lib' 폴더에 있기를 원하면, 'Source : "install \ lib \ *. jar";를 정의 할 수 있습니다. DestDir : "{app} \ lib"'쉬운 방법 : 각 스크립트 파일에 다른 소스 폴더를 정의하여 각 32 비트 및 64 비트 설정에 대해 별도의 InnoSetup 스크립트를 가질 수 있습니다. – ecle

+0

@eee : 32 비트 및 64 비트 시스템 용으로 하나의 설치 프로그램을 갖고 싶습니다. 따라서 두 개의 다른 "lib"폴더가 있습니다. lib-32와 lib-64는 동적으로 설정했기 때문에 동적으로 읽길 원합니다. – Saurabh

답변

4

external 플래그가없는 한 컴파일 타임에 소스 경로를 사용해야합니다. 즉, ISPP와 #define을 사용해야합니다. [Code] 섹션은 실행/설치 타임 코드 전용이므로 대상 경로에서 작동합니다.

GetSourceLibFolder 코드를 제공하면 다른 사람이 ISPP로 변환 할 수 있습니다.

+0

고마워요! 함수 정의를 포함하도록 원래 게시물을 편집했습니다. – Saurabh

+0

그리고 다시'SourceLibFolder'는 무엇입니까? 런타임이 아닌 컴파일 타임에 있어야한다는 것을 기억하십시오. – Deanna

+0

'SourceLibFolder'는'[Setup]'섹션의'DefaultDestDir' 변수의 코드 섹션에서 값을 얻는 전역 변수입니다 :'DefaultDirName = {code : SetProgramFileLocation} \ HP \ Pulse \ {# MyAppName}' – Saurabh

관련 문제