首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Inno安装程序:重命名目录失败

Inno安装程序:重命名目录失败
EN

Stack Overflow用户
提问于 2014-11-21 18:57:54
回答 1查看 2.8K关注 0票数 1

我试图使用RenameFile函数重命名一个目录,但没有成功。使用DirExists函数,我确认了原始目录的存在和新目录的不存在。但重命名仍然失败。目录路径仅包含ASCII字符。我正在使用Inno安装程序5.5.5。尝试了Unicode和非Unicode版本。同样的结果。守则是:

代码语言:javascript
复制
procedure CurStepChanged(CurStep: TSetupStep);
var
  NewFolder, BackupFolder: String;
begin
  NewFolder := LgtUserDirPage.Values[0];
  Log('NewFolder: ' + NewFolder);
  if (CurStep = ssInstall) and DirExists(NewFolder) and (pos('backup', WizardSelectedComponents(False)) > 0) then begin
    BackupFolder := NewFolder + '-backup'
    Log('BackupFolder: ' + BackupFolder);
    if DirExists(NewFolder) then Log('Found!');
    if not DirExists(BackupFolder) then Log('No backup!');
    if RenameFile(NewFolder, BackupFolder) then Log('Backup created!');
  end
  else if (CurStep = ssPostInstall) then begin
    if FileExists(BackupFolder + '\settings.lgt') then
      FileCopy(BackupFolder + '\settings.lgt', NewFolder + '\settings.lgt', False);
    if FileExists(BackupFolder + '\settings.logtalk') then
      FileCopy(BackupFolder + '\settings.logtalk', NewFolder + '\settings.logtalk', False)
  end
end;

调试输出是:

代码语言:javascript
复制
Setup application started
Setup version: Inno Setup version 5.5.5 (u)
Original Setup EXE: C:\Users\pmoura\Desktop\Output\logtalk-3.00.0-rc7.exe
Setup command line: /SL5="$3E0350,1739097,119296,C:\Users\pmoura\Desktop\Output\logtalk-3.00.0-rc7.exe" /SPAWNWND=$2D038A /NOTIFYWND=$220252 /DEBUGWND=$11027C 
Windows version: 6.1.7601 SP1  (NT platform: Yes)
64-bit Windows: Yes
Processor architecture: x64
User privileges: Administrative
64-bit install mode: No
Created temporary directory: C:\Users\pmoura\AppData\Local\Temp\is-JA0BI.tmp
NewFolder: C:\Users\pmoura\Documents\Logtalk
BackupFolder: C:\Users\pmoura\Documents\Logtalk-backup
Found!
No backup!

我从来没有得到Backup created!输出。执行从这一行一直到过程的末尾。有人知道有什么原因可以解释重命名失败的原因吗?磁盘空间不是问题,顺便说一句。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-22 00:43:56

发现问题了。结果发现,RenameFile失败是因为打开的shell中有一个当前目录,我正在尝试重命名该目录。在这种情况下,RenameFile似乎只是返回false。指出这个问题的权限错误(代码)会更有启发性。

我现在已经更新了我的脚本,以便在RenameFile失败时警告用户,并指出可能的原因。更新代码可以浏览这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27068381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档