2013-01-31 2 views
2

파일을 찾아 선택한 다음이 파일을 선택한 소스에서 app 폴더로 복사해야합니다. 이 게시물 How to show/use the user selected app path {app} in InputDirPage in Inno Setup? 와 이노 설치 설명서에 따라Inno Setup으로 복사 할 파일을 사용자가 찾아 볼 수있게하는 방법

, 나는이 코드 조각에 온 :

[Files] 
Source: {code:GetDBPath}; DestDir: "{app}"; Flags: confirmoverwrite uninsneveruninstall; 

[Code] 
var 
    SelectDBPage: TInputDirWizardPage; 
    DBPath: String; 

procedure InitializeWizard; 
begin 
    SelectDBPage := CreateInputDirPage(wpSelectDir, 'Select file', 'Select file', 'Select file', False, ''); 
    SelectDBPage.Add(''); 
    SelectDBPage.Values[0] := ExpandConstant('{src}\DB.FDB'); 
    DBPath := SelectDBPage.Values[0]; 
end; 

function GetDBPath():String; 
begin 
    Result := DBPath; 
end; 

내 문제는 파일 경로를 검색하는 것입니다. 'Source : {code : GetDBPath}'명령에서 '알 수없는 파일 이름 접두어 {code :'오류가 발생합니다. [파일] 섹션에서 선택한 파일 경로를 어떻게 참조 할 수 있습니까?

+0

StackOverflow에 오신 것을 환영합니다. 네가 혼란스러워하는 것 같아. [files] 섹션은 스크립트에서 컴파일 할 때 읽습니다. 그런 다음 컴파일러는 프로그램을 설치하기위한 모든 파일과 지시 사항을 포함하는 설치 프로그램을 생성합니다. InitializeWizard는 런타임에 생성 된 설치 관리자가 실행될 때 호출되므로 마법사 페이지를 표시하여 설치에 포함 된 파일을 변경할 수 없습니다. 이는 프로그래밍 언어의 컴파일 타임 및 런타임과 매우 유사합니다. – jachguate

+0

질문에 명확하지 않은 점은 _user_가 컴파일 할 때 스크립트에 포함 할 파일을 선택하게하거나 _user_가 대상 컴퓨터에서 파일을 선택하고 그 파일을 이동/복사하도록 허용하려는 경우입니다 파일을 런타임에 해당 대상 컴퓨터의 다른 위치로 복사하십시오. – jachguate

답변

2

당신은 [Files] 항목에 external 플래그를 추가해야합니다 감사합니다. 즉, 소스가 런타임에 평가되고 CAN에 {code:...} 상수가 포함될 수 있습니다.

GetDBPath() 함수에서도 올바른 값을 얻지 못할 수도 있습니다. 에서 최신 값을 가져 오는 대신 페이지를 만든 후에 업데이트되지 않은 DBPath 값을 반환합니다.

+0

외부 깃발이 필요했습니다. 여전히 올바른 가치를 취하는 것 같지 않습니다. 나는 브라우저 창에서 파일을 선택할 때 입력 필드에 파일 경로가 변경되지 않고 다음 단계에서 선택된 값을 갖지 못한다는 것을 의미합니다. – user2029958

+0

페이지에서 값을 다시 읽지 않습니다. 답변을 업데이트했습니다. – Deanna

+0

고맙습니다. 나는 inno setup 스크립팅이 처음이다. 다시 한번 감사드립니다. – user2029958

관련 문제