如何使用inno设置重命名文件

Joh*_*ael 3 inno-setup

我想首先将现有文件"我的程序旧"重命名为"我的程序v2",但仅限于"我的程序v2"尚不存在.

然后我想将"我的程序"重命名为"我的程序旧",但前提是"我的程序已旧"尚未存在.

然后我想从安装程序安装"我的程序",但前提是"我的程序"尚不存在.

我会非常感谢任何指导!

TLa*_*ama 6

我会尝试这样的事情.在安装过程开始之前发生ssInstallCurStepChanged事件阶段,只需检查文件是否与该FileExists函数不存在,如果没有,则只需调用该RenameFile函数,如果源文件不存在,该函数将无声地失败存在,因此您不需要关心源文件是否存在.在该[Files]部分中,您可以使用该onlyifdoesntexist标志作为上一个要求.commented version如果需要,您可以按照此脚本执行以下操作:

[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;
Run Code Online (Sandbox Code Playgroud)