未直接
は#includeディレクティブを覚えディレクティブは、Inno Setupのスクリプトコンパイラにある場所に表示されるように含まれるファイルを作るだけで、プリコンパイラ・ディレクティブです。
しかし は、テンプレートスクリプト上の個々のインストーラコードを含めないようにするには、テンプレートでプロシージャを呼び出すための規則を作成することができます。
あなたが従わなければならない唯一の規則は、すべてのインストーラが手続きを宣言しなければならないことです。これにより、中立のテンプレートを維持しながら、インストーラーごとにカスタマイズすることができます。
あなたのテンプレートのようなものかもしれ
:次に、個々のインストーラは、このように見えるかもしれ
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := BeforeNextButtonClick(CurPageID);
//if the per-installer code decides not to allow the change,
//this code prevents further execution, but you may want it to run anyway.
if not Result then
Exit;
//your template logic here
Result := Anything and More or Other;
//same here!
if not Result then
Exit;
//calling the per-installer code
Result := AfternextButtonClck(CurPageID);
end;
:
function BeforeNextButtonClick(CurPageID: Integer): Boolean;
begin
//specific logic here
Result := OtherThing;
end
function AfterNextButtonClick(CurPageID: Integer): Boolean;
begin
//and here, a blank implementation
Result := True;
end;
#include MyCodeTemplate.iss
は、多分私だけであれば覚えていないことができ、複雑なアプローチを実現することが可能ですPascalScriptは手続き型をサポートしており、innoでチェックする時間はありません。
免責事項すべてのコードは、アイデアを示すためにここに直接書かれていますが、コンパイルできない可能性があります。
+1興味深いアプローチ。私の状況では、カスタムコードが必要なのは2つまたは3つしかなく、数十人のインストーラが必要です。だから、私の目的のために、基本テンプレートに2〜3の余分なコードセクションを追加することは、私の個々のインストーラの大部分に空白の関数を追加するよりも優れています。しかし、状況が逆転し、私の個々のインストーラの大部分がカスタムコードを必要とする場合、私はあなたの提案が行く方法だと思う。 – mwolfe02