2016-03-29 24 views
1

在我的代碼部分,我需要修改現有的配置文件(Apache httpd.conf),以包含我在Files部分安裝的文件之一。如何引用Code/Pascal部分的Files部分中的文件?

我如何可以參考我的.conf文件,這樣我就可以插入httpd.conf是這樣的:

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

我想我可以這樣做:

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

得到完整的路徑的文件。

但是這意味着我必須在腳本代碼中對部分路徑進行硬編碼。如果我們稍後更改路徑,那麼我必須在文件部分中更改它,並記住在腳本代碼中更改它。

有沒有辦法僅通過名稱引用文件並獲取完整的安裝路徑?

第二個問題:
什麼是做這種事情的最好的地方(修改文件)?

  1. 在文件的AfterInstall我要修改它?
  2. In NextButtonClick on wpFinished
  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