2016-10-10 1 views
1

나는 몇 가지 기본적인 것들을위한 코드 섹션을 가진 Inno Setup 스크립트를 가지고있다. 그러나 또 다른 Inno Setup 스크립트 파일 (.iss)은 Windows 서비스를 특별히 다룹니다. 내 주요 스크립트에서 직접 이러한 함수/프로 시저를 호출하고 싶습니다. 그럼 #includeCode 섹션에서 해당 기능을 호출 할 수 있도록 내 주 스크립트에 services.iss 파일을 작성합니까?코드 섹션에서 외부 Inn 스크립트를 호출하고 주요 Inno 설치 스크립트의 기능을 사용하려면 어떻게해야합니까?

이 방법을 사용하여 파일 섹션을 분할하는 방법을 나타내는 넷 예제를 보았습니다. 그러나 설치간에 공통 코드 스크립트를 사용하여 코드 섹션을 분할하고 싶습니다. 나는 여기 저기에 언급을 발견 할 수 있었지만, 그것을하는 법을 알 수는 없습니다.

답변

1

직접 언급 했으므로 #include pre-processor directive을 사용하십시오.

당신은 common.pas 같은 공통 코드 파일이있는 경우 : 정말 문제

[Code] 

#include "common.pas" 

function InitializeSetup(): Boolean; 
begin 
    { Calling procedure included from the common.pas } 
    CommonProcedure; 

    Result := True; 
end; 

확장하지 않는 :

procedure CommonProcedure; 
begin 
    { ... } 
end; 

당신은 같은 주 .iss 스크립트에 포함시킬 수 . 나는 .pas을 파일로 사용했다. 이것은 순수한 파스칼 (Script) 코드이다. 그러나 .iss을 선호하는 경우 선택하십시오.

[Code] 

procedure CommonProcedure; 
begin 
    { ... } 
end; 

그리고 [Code] 섹션의 파일 밖으로 측과 같습니다 :

#include "common.pas" 

[Code] 

function InitializeSetup(): Boolean; 
begin 
    { Calling procedure included from the common.pas } 
    CommonProcedure; 

    Result := True; 
end; 

이 방법도 당신에게 더 큰 유연성을 제공을 다음 있지만, 문법적으로는 파일에 섹션 이름을 포함하는 더 적합 할 것 , 예. 경우에 당신은 당신의 코드를 일부 지원 파일이 필요합니다 :

[Files] 
Source: "InnoCallback.dll"; Flags: dontcopy 

[Code] 

procedure CommonProcedure; 
begin 
    { ... } 
end; 

(이 스타일 기술적으로 코딩의 문제 비록 섹션은 어떤 방식으로 혼합 할 수있는, 그것은 정말 중요하지 않습니다 그래서 당신은 할 수 있습니다.. [Code] 섹션 다음에 [Files] 섹션 다음에 또 다른 [Code] 섹션이 오는 섹션).

+0

Brilliant! 감사합니다. – Hentie

+0

당신은 오신 것을 환영합니다. Stack Overflow에서 우리는 [답변을 수락 해 주셔서 감사합니다] (http://stackoverflow.com/help/someone-answers). –