我试图逐行阅读文本文件的内容;
我正在寻找特定行的东西。
我需要修改那条线;
我需要将新内容保存在另一个文件中,然后删除原始文件并使用原始文件名重命名新文件;
function NextButtonClick(CurPageID: Integer): Boolean;
var
ExecInfo: TShellExecuteInfo;
ExecInfoBrowser: TShellExecuteInfo;
textFileFrom, textFileTo : text;
line: string;
begin
Result := True;
if CurPageID = wpFinished then
begin
ExecInfo.cbSize := SizeOf(ExecInfo);
ExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
ExecInfo.Wnd := 0;
ExecInfo.lpFile := ExpandConstant('{app}') + '\{#Exewampmanager}';
ExecInfo.nShow := SW_HIDE;
if ShellExecuteEx(ExecInfo) then
begin
if WaitForSingleObject(ExecInfo.hProcess, 5000) = WAIT_TIMEOUT then
begin
Assign(textFileFrom,'wampmanager.conf');
Reset(textFileFrom);
Assign(textFileto,'wampmanager2.conf');
Rewrite(textFileTo);
repeat
readln(textFileFrom,line);
writeln(textFileto,line);
until eof(textFileFrom);
Close(textFileFrom);
Close(textFileTo);
ExecInfoBrowser.cbSize := SizeOf(ExecInfo);
ExecInfoBrowser.fMask := SEE_MASK_NOCLOSEPROCESS;
ExecInfoBrowser.Wnd := 0;
ExecInfoBrowser.lpFile := 'http://localhost/cow';
ExecInfoBrowser.nShow := SW_HIDE;
ShellExecuteEx(ExecInfoBrowser);
end;
end;
end;
end;
在文件中我需要点击此行:installDir = "c:/wamp"
因为新安装可能不在同一位置
这是conf文件:
[main]
language = english
status = "offline"
wampserverVersion = 2.2
wampserverLastKnown = 2.2
installDir = "c:/wamp"
navigator = "C:\Windows\explorer.exe"
defaultLanguage = english
[php]
phpVersion = "5.4.3"
phpLastKnown = 5.4.3
phpIniDir = .
phpConfFile = php.ini
phpExeDir = .
[phpCli]
phpCliVersion = 5.4.3
phpExeFile = php.exe
phpCliFile = php-win.exe
[apache]
apacheVersion = "2.2.22"
apacheLastKnown = 2.2.22
apacheExeDir = bin
apacheConfDir = conf
apacheExeFile = httpd.exe
apacheConfFile = httpd.conf
apacheServiceInstallParams = -n wampapache -k install
apacheServiceRemoveParams = -n wampapache -k uninstall
[mysql]
mysqlVersion = "5.5.24"
mysqlLastKnown = 5.5.24
mysqlConfDir = .
mysqlConfFile = my.ini
mysqlExeDir = bin
mysqlExeFile = mysqld.exe
mysqlServiceInstallParams = --install-manual wampmysqld
mysqlServiceRemoveParams = --remove wampmysqld
[apps]
phpmyadminVersion = 3.5.1
sqlbuddyVersion = 1.3.3
webgrindVersion = 1.0
答案 0 :(得分:2)
如果该配置文件采用INI文件格式,那么您可以使用[INI]
部分修改单个值,例如:这样(注意,你必须加倍双引号来编译脚本并将值括在双引号中)。当然,我在这里展示的值你可以用常量代替:
[INI]
Filename: "{app}\wampmanager.conf"; Section: "main"; Key: "installDir"; String: """{app}"""
或者您可以使用[Code]
部分中的代码使事情复杂化:
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
[Code]
function ChangeInstallDir(const FileName, InstallDir: string): Boolean;
begin
Result := SetIniString('main', 'installDir', '"' + InstallDir + '"', FileName);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
if not ChangeInstallDir(ExpandConstant('{app}\wampmanager.conf'),
ExpandConstant('{app}')) then
MsgBox('Saving to config file failed!', mbError, MB_OK);
end;