2016-03-29 6 views
1

In meinem Codeabschnitt muss ich eine vorhandene Konfigurationsdatei (Apache httpd.conf) ändern, um eine der Dateien aufzunehmen, die ich in der Files Sektion installiere.Wie referenzieren Sie die Dateien im Abschnitt Dateien im Abschnitt Code/Pascal?

Wie kann ich verweisen meine .conf Datei, so kann ich wie dies in den httpd.conf etwas einfügen:

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

Ich glaube, ich kann etwas tun wie:

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

den vollständigen Pfad zu erhalten der Datei.

Das bedeutet jedoch, dass ich den Teilpfad in meinem Skriptcode fest codieren muss. Wenn wir später den Pfad ändern, muss ich ihn im Dateibereich ändern und daran denken, ihn auch im Skript-Code zu ändern.

Gibt es eine Möglichkeit, die Datei nur mit Namen zu referenzieren und den vollständigen Pfad zu erhalten?

Zweite Frage:
Was ist der beste Ort, um so etwas zu tun (Ändern einer Datei)?

  1. In der AfterInstall der Datei werde ich es ändern für?
  2. In NextButtonClick auf wpFinished?
  3. Andere?
+0

Ich nehme an, ich könnte eine Variable für den Teilpfad definieren und diese überall verwenden - das würde das Problem lösen, sie an mehreren Stellen ändern zu müssen. Ich bin aber noch neu bei INNO, also bin ich mir nicht sicher, ob ich eine Variable bekommen kann, um sie überall zu erweitern, wo ich sie brauche. – Toby

Antwort

1

Verwenden Sie eine preprocessor constant/variable.

Der beste Ort zum Aktualisieren der httpd.conf ist CurStepChanged(ssPostInstall). Die AfterInstall wird auch tun.

#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

Danke! Es wäre nett, wenn die Dateien im Dateibereich benannt werden könnten oder eine ID erhalten könnten, auf die Sie verweisen könnten, aber dies ist eine praktikable Lösung. – Toby

Verwandte Themen