在 Inno Setup 中转换 CurrentFilename 返回的 {constants}
Convert {constants} returned by CurrentFilename in Inno Setup
如何从下面的代码中获得漂亮的完整文件名:
;bugfixes
Source: "Bugfixes\CombatGameConstants.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()
returns 我 {code:battletechDataDir}\constants\{code:battletechDataDir}\constants
。那么如何将 {code:battletechDataDir}
转换为目录,或者以其他方式备份给定文件?
您可以使用 ExpandConstant
function:
fileToBackup := ExpandConstant(CurrentFilename()); { get destination file name }
尽管 CurrentFilename
旨在与通配符源一起使用。有了固定的文件名,还不如显式引用文件:
fileToBackup := battletechDataDir('') + '\constants\CombatGameConstants.json';
如何从下面的代码中获得漂亮的完整文件名:
;bugfixes
Source: "Bugfixes\CombatGameConstants.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()
returns 我 {code:battletechDataDir}\constants\{code:battletechDataDir}\constants
。那么如何将 {code:battletechDataDir}
转换为目录,或者以其他方式备份给定文件?
您可以使用 ExpandConstant
function:
fileToBackup := ExpandConstant(CurrentFilename()); { get destination file name }
尽管 CurrentFilename
旨在与通配符源一起使用。有了固定的文件名,还不如显式引用文件:
fileToBackup := battletechDataDir('') + '\constants\CombatGameConstants.json';