2016-03-29 6 views
1

私のコードセクションでは、私がFilesセクションにインストールしているファイルの1つを含めるために、既存の設定ファイル(Apache httpd.conf)を変更する必要があります。完全なパスを取得するには[ファイル]セクションの[ファイル/パスカル]セクションからファイルを参照する方法は?

ExtractFilePath({app}) + '\conf\myinclude.conf' 

Include "C:/Program Files (x86)/Apache Software Foundation/Apache2.4/conf/myinclude.conf" 

私は私のような何かを行うことができると思う:私は私の.confファイルを参照することができますので、私はこのようなhttpd.conf何かに挿入することができますどのように

ファイルの

しかし、これは、スクリプトコードで部分パスをハードコードする必要があることを意味します。後でパスを変更する場合は、ファイルセクションで変更する必要があります。また、スクリプトコードで変更することを忘れないでください。

名前でファイルを参照し、完全にインストールされたパスを取得する方法はありますか?

二次質問:
このような種類の作業(ファイルの変更)を行うには最適な場所は何ですか?

  1. ファイルのAfterInstallでは、私はそのファイルを変更しようとしていますか?
  2. NextButtonClickwpFinished
  3. その他?
+0

私は、部分パスの変数を定義してどこでも使用できると思います。それは複数の場所で変更する必要があるという問題を解決します。しかし、私はまだINNOに新しいので、私はそれが必要かもしれないどこでも拡大する変数を得ることができるかどうかはわかりません。 – Toby

答えて

1

preprocessor constant/variableを使用してください。

httpd.confを更新するのに最適な場所はCurStepChanged(ssPostInstall)です。 AfterInstallもそうです。

#define MyIncludeName "myinclude.conf" 
#define MyIncludeRelPath "conf\" + MyIncludeName 

[Files] 
Source: "{#MyIncludeName}"; DestDir: "{app}\..\{#MyIncludeRelPath}" 

[Code] 

procedure CurStepChanged(CurStep: TSetupStep); 
var 
    Path: string; 
begin 
    if CurStep = ssPostInstall then 
    begin 
    Path := ExtractFilePath(ExpandConstant('{app}')) + '{#MyIncludeRelPath}'; 
    ... 
    end; 
end; 
+0

ありがとう! ファイルセクションのファイルに名前を付けるか、参照できるIDを付けることができればいいですが、これは実行可能な解決策です。 – Toby

関連する問題