我已經配置了下面的腳本來要求用戶輸入IP地址作爲安裝嚮導的一部分,該地址被寫入應用程序將引用的配置文件以知道在哪裏進行通信用。 不過目前,服務是在更新配置文件之前創建的(Run
部分發生在CurStep = ssPostInstall
之前),所以默認值在文件更新之前已經從文件中讀取。 這意味着當前需要進一步的手動服務重啓才能使應用程序進行通信。在創建服務之前運行post安裝文件替換
據我所知,Run
部分可能在ssPostInstall
之後發生。
我已閱讀文章Inno Setup: How to run a code procedure in Run section or before Run section?,這表明我可以使用參數BeforeInstall:
作爲運行命令的一部分,以首先執行CurStepChanged
過程。但是,這會導致錯誤
找到了必需的函數或過程'CurStepChanged',但找不到兼容的原型。
我也試着移動CurStepChanged
部分上方的運行行和命令(儘可能匹配提到的文章),但是這仍然返回相同的錯誤。
任何人都可以提供一些指導,以我哪裏出錯配置?
[Code]
var
PrimaryServerPage: TInputQueryWizardPage;
function FileReplaceString(ReplaceString: string):boolean;
var
MyFile : TStrings;
MyText : string;
begin
Log('Replacing in file');
MyFile := TStringList.Create;
try
Result := true;
try
MyFile.LoadFromFile(ExpandConstant('{app}' + '\providers\print\win\print-provider.conf'));
Log('File loaded');
MyText := MyFile.Text;
{ Only save if text has been changed. }
if StringChangeEx(MyText, 'REPLACE_WITH_CUSTOMER_IP', ReplaceString, True) > 0 then
begin;
Log('IP address inserted');
MyFile.Text := MyText;
MyFile.SaveToFile(ExpandConstant('{app}' + '\providers\print\win\print-provider.conf'));
Log('File saved');
end;
except
Result := false;
end;
finally
MyFile.Free;
end;
Result := True;
end;
procedure InitializeWizard;
begin
PrimaryServerPage :=
CreateInputQueryPage(
wpWelcome, 'Application Server Details', 'Where is installed?',
'Please specify the IP address or hostname of your ' +
'Primary Application Server, then click Next.');
PrimaryServerPage.Add('Primary Application Server IP/Hostname:', False);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
Log('File installed, replacing IP address');
FileReplaceString(PrimaryServerPage.Values[0]);
end;
end;
[run]
Filename: {sys}\sc.exe; Parameters: "create PCPrintProvider start= auto binPath= ""{app}\providers\print\win\pc-print.exe PCPrintProvider"" depend= Spooler" ; Flags: runhidden ; BeforeInstall: CurStepChanged
Filename: {sys}\sc.exe; Parameters: "start PCPrintProvider" ; Flags: runhidden ; BeforeInstall: CurStepChanged
你有沒有嘗試使用** **檢查PARAM在[運行]部分? –