我想首先将现有文件“我的程序旧”重命名为“我的程序 v2”,但前提是“我的程序 v2”不存在。
然后我想将“我的程序”重命名为“我的程序旧”,但前提是“我的程序旧”不存在。
然后我想从安装程序安装“我的程序”,但前提是“我的程序”不存在。
我将非常感谢任何指导!
我想首先将现有文件“我的程序旧”重命名为“我的程序 v2”,但前提是“我的程序 v2”不存在。
然后我想将“我的程序”重命名为“我的程序旧”,但前提是“我的程序旧”不存在。
然后我想从安装程序安装“我的程序”,但前提是“我的程序”不存在。
我将非常感谢任何指导!
我会尝试这样的事情。在安装过程开始之前发生ssInstall
的事件阶段CurStepChanged
,只需检查该文件是否不存在该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;