2016-10-10 15 views
1

いくつかの基本的なもののコードセクションを持つInno Setupスクリプトがあります。しかし、私はまた、Windowsサービスを特に扱う別のInno Setupスクリプトファイル(.iss)を持っています。私はこれらの関数/プロシージャをメインスクリプトから直接呼び出したいと思います。では#includeservices.issファイルを私のメインスクリプトに入れて、Codeセクションからその関数を呼び出すことができますか?外部のissスクリプトを呼び出して、コードセクションのメインInno Setupスクリプトから関数を使用するにはどうすればよいですか?

この方法を使用してファイルセクションを分割する方法を示すネットの例をいくつか見てきましたが、これはインストール間で共通コードスクリプトを使用してコードセクションを分割できるようにしたいのです。私はそれについてここで、そしてそこに言及することができましたが、それはあなたにそれをする方法を教えてくれません。

答えて

1

あなた自身について言及したとおり、#include pre-processor directiveを使用してください。以下のような

procedure CommonProcedure; 
begin 
    { ... } 
end; 

あなたがメイン.issスクリプトにそれを含めることができます:

あなたはcommon.pasのような共通のコードファイルを持っている場合に

[Code] 

#include "common.pas" 

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

    Result := True; 
end; 

拡張子は本当に問題ではありません。私は.pasをファイルとして使用しました。これは純粋にパスカル(スクリプト)コードです。しかし、あなたが.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

ブリリアント!ありがとうございます – Hentie

+0

あなたはようこそ。スタックオーバーフローでは、私たちは[答えを受け入れることで感謝します](http://stackoverflow.com/help/someone-answers)。 –

関連する問題