转换 {常量} 由 Inno 安装程序中的当前文件名返回



如何从下面的代码中获得漂亮的完整文件名:

;bugfixes
Source: "BugfixesCombatGameConstants.json"; DestDir: "{code:battletechDataDir}constants";
Flags: uninsneveruninstall; Components: DataBugfixes; BeforeInstall: BackupFile()

BackupFile()程序:

procedure BackupFile();
var fileToBackup : String;
begin
{ if backup file already exists skip creation, otherwise rename the file to file.backup }
fileToBackup := CurrentFilename(); { get destination file name }
if not FileExists(fileToBackup + '.backup') then
begin
if not RenameFile(fileToBackup, fileToBackup + '.backup') then
MsgBox('Creation backup file for ' + fileToBackup + ' failed!', mbInformation, MB_OK);
end;
end;

这不会将{code:battletechDataDir}转换为完整路径 -CurrentFileName()返回我{code:battletechDataDir}constants{code:battletechDataDir}constants。那么如何将该{code:battletechDataDir}转换为目录,或者以其他方式备份给定文件?

您可以使用ExpandConstant函数:

fileToBackup := ExpandConstant(CurrentFilename()); { get destination file name }

虽然CurrentFilename旨在与通配符源一起使用。使用固定文件名,您不妨显式引用该文件:

fileToBackup := battletechDataDir('') + 'constantsCombatGameConstants.json';

最新更新