论坛风格切换切换到宽版
  • 2698阅读
  • 2回复

inno请问怎样在ini文件的某一行添加一句文本 [复制链接]

上一主题 下一主题
离线guxiaoyu
 

发帖
36
金钱
360
威望
36
只看楼主 倒序阅读 0 发表于: 2013-10-16
inno请问怎样在ini文件的某一行添加一句文本,插入一行
离线z454892031

发帖
50
金钱
500
威望
50
只看该作者 1 发表于: 2013-10-18
;在 inno 中,如果想在安装后替换一个文本文件的内容,是否可以通过脚本实现

;比如,文本中有这样一句 C:\aaa,那么希望是把所有出现的 C:\aaa 替换成软件的安装目录 c:\setup

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
  IniFile, OldString, NewString: string;
  IniFileLines: TArrayOfString;
  i: Integer;
begin
  if CurStep = ssDone then
  begin
    IniFile:= ExpandConstant('{app}\myfile.ini'); // 你的 INI 文件名
    OldString:='要替换的旧字符串'; // 要替换的旧字符串
    NewString:= ExpandConstant('{app}'); // 新字符串
    //以下开始替换字符串
    LoadStringsFromFile(IniFile, IniFileLines);
    for i:= 0 to GetArrayLength(IniFileLines)-1 do
    if (Pos(OldString, IniFileLines) > 0) then
      StringChange(IniFileLines, OldString, NewString);
      //StringChangeEx(IniFileLines, OldString, NewString, true);    //这个可以支持双字节字符集(DBCS)
      SaveStringsToFile(IniFile, IniFileLines, False);
  end;
end;

//假如你定义了一个名称为 ModifyIni 的组件并且希望只有在用户选定了该组件时才对 INI 文件进行修改,那么你只要把上面脚本中的语句
if CurStep = ssDone then
//改成:
if (CurStep = ssDone) and (IsComponentSelected('ModifyIni')) then  //原文第二个括号是Pos('ModifyIni',WizardSelectedComponents(false))>0,经实践证明无效
//假如你定义了一个名称为 ModifyIni 的 Task 并且希望只有在用户选定了该 Task 时才对 INI 文件进行修改,那么你只要把上面脚本中的语句
if CurStep = ssDone then
//改成:
if (CurStep = ssDone) and (Pos('ModifyIni',WizardSelectedTasks(false))>0) then


//最底下一行加入一行文字我该怎么做?
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssDone then
    SaveStringToFile('你的文件', #13#10 + '要添加的行' + #13#10, True);
end;

//卸载时删除添加或修改的字符串
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
  s: TStringList;
  i: integer;
begin
  if CurUninstallStep = usDone then
  begin
    s:=TStringList.Create;
    try
      s.loadfromfile('C:\0file');
      for i:= s.count-1 downto 0 do
        if s='要删除的旧字符串' then s.delete(i);
      s.savetofile('C:\file');
    finally
      s.free;
    end; // end of try
  end; // end of if
end;



离线969511048

发帖
151
金钱
1440
威望
144
只看该作者 2 发表于: 2014-05-18
这太长了,看看有更好的吗