2010-02-01 3 views
1

이것은 아마도 간단한 수정 사항이지만 내 머리를 감쌀 수없는 것 같습니다. 설치할 앱이 있습니다.이 앱을 설치하려면 3 가지 가능한 INI 파일 중 하나를 선택해야합니다. 나는 각각 다른 INI를 사용하는 3 가지 설정을 쉽게 할 수 있지만 문제를 단순화하고 설치시 사용자에게 INI를 선택할 수있게하고 싶습니다. INI 파일은 이름이 같기 때문에 패키지화하면 다른 이름을 지정해야합니다. 사용자가 어떤 INI를 설치할지 선택하면 app 디렉토리에 추출되어 이름이 바뀝니다. 이 일을 할 수있는 방법이 있습니까?INNO 설치 : 설치 패키지에 구성 파일 정의

도움 주셔서 감사합니다.

답변

0

추가적인 ini 파일을 삭제하고 나머지 파일의 이름을 바꾸는 파스칼 루틴을 [Run] 섹션을 작성하거나 추가하십시오 (AfterInstall : parameter).

+0

감사합니다. 나는 그것을 조사하고 내가 할 수있는 것을 보게 될 것이다. –

1

당신은 [파일] 섹션 세 INI 파일에 대한 항목을 추가 그들에게 동일한 대상 이름을주고, 하나 하나가 설치되는 런타임에 결정하는 Check 매개 변수를 사용할 수 있습니다. 내 설치 스크립트 중 하나에서 미리보기 :

[Files] 
Source: "{src}\Line1.ini"; DestDir: "{app}"; DestName: "Line.ini"; \ 
    Flags: external; Check: IsLine1 
Source: "{src}\Line2.ini"; DestDir: "{app}"; DestName: "Line.ini"; \ 
    Flags: external; Check: IsLine2 
Source: "{src}\Line3.ini"; DestDir: "{app}"; DestName: "Line.ini"; \ 
    Flags: external; Check: IsLine3 

그리고 [코드] 섹션의 지원 기능 : LinePage 유형 TInputOptionWizardPage의 사용자 지정 페이지입니다

function IsLine(ID: integer): boolean; 
begin 
    Result := (ID = 1 + LinePage.SelectedValueIndex); 
end; 

function IsLine1(): boolean; 
begin 
    Result := IsLine(1); 
end; 

function IsLine2(): boolean; 
begin 
    Result := IsLine(2); 
end; 

function IsLine3(): boolean; 
begin 
    Result := IsLine(3); 
end; 

. 사용자는 프로덕션 라인이 설치 될 라디오 그룹을 선택하고 일치하는 INI 파일 만 복사됩니다. 필자의 경우에는 external이지만, 설정으로 컴파일 할 수도 있습니다.

관련 문제