我希望首先将现有文件'My program old'重命名为'My program v2',但前提是'My program v2'不存在。
然后我想将'My program'重命名为'My program old',但前提是'My program old'不存在。
然后,我想从安装程序中安装'My program',但前提是'My program'不存在。
如果您能提供任何指导,我会非常感激!
我希望首先将现有文件'My program old'重命名为'My program v2',但前提是'My program v2'不存在。
然后我想将'My program'重命名为'My program old',但前提是'My program old'不存在。
然后,我想从安装程序中安装'My program',但前提是'My program'不存在。
如果您能提供任何指导,我会非常感激!
我建议你尝试类似以下的方案。在安装过程开始之前,即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;