如何在Inno Setup中重命名文件

3

我希望首先将现有文件'My program old'重命名为'My program v2',但前提是'My program v2'不存在。

然后我想将'My program'重命名为'My program old',但前提是'My program old'不存在。

然后,我想从安装程序中安装'My program',但前提是'My program'不存在。

如果您能提供任何指导,我会非常感激!

1个回答

7

我建议你尝试类似以下的方案。在安装过程开始之前,即CurStepChanged事件的ssInstall阶段,用FileExists函数检查文件是否存在,如果不存在,则调用RenameFile函数。如果源文件不存在,RenameFile函数会默默失败,因此您无需关心源文件是否存在。在[Files]部分中,您可以使用onlyifdoesntexist标志来满足您的最后一个要求。如果您想了解更多信息,请参考注释版本的脚本:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Files]
Source: "My program"; DestDir: "{app}"; Flags: onlyifdoesntexist

[Code]
function GetFileName(const AFileName: string): string;
begin
  Result := ExpandConstant('{app}\' + AFileName);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if (CurStep = ssInstall) then
  begin
    if not FileExists(GetFileName('My program v2')) then
      RenameFile(GetFileName('My program old'), GetFileName('My program v2'));
    if not FileExists(GetFileName('My program old')) then
      RenameFile(GetFileName('My program'), GetFileName('My program old'));
  end;
end;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接