还是因为 Unicode 版本的问题。 在 Unicode 版本中 StringChange 要 Unicode String,即 String,而 LoadStringFromFile 要 AnsiString,所以要转换一下。
[code]
procedure CurStepChanged(CurStep: TSetupStep);
var
fn, s: AnsiString;
us: String;
begin
fn:= ExpandConstant('{app}\myflie.min');
if CurStep = ssDone then // 安装最后一步修改文件
if FileExists(fn) then
begin
LoadStringFromFile(fn, s);
us:= String(s);
StringChange(us, 'end registry', 'link "myflie_mr.dll"'+#13#10+'min "myflie_mr.min"'+#13#10+'end registry');
SaveStringToFile(fn, AnsiString(us) , false);
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
fn, s: AnsiString;
us: String;
begin
fn:= ExpandConstant('{app}\myflie.min');
if CurUninstallStep = usDone then // 卸载最后一步把文件文件改回去
if FileExists(fn) then
begin
LoadStringFromFile(fn, s);
us:= String(s);
StringChange(us, 'link "myflie_mr.dll"'+#13#10+'min "myflie_mr.min"'+#13#10+'end registry', 'end registry');
SaveStringToFile(fn, AnsiString(us), false);
end;
end;