【问题标题】:nsis delete doesn't worknsis 删除不起作用
【发布时间】:2015-08-27 22:57:25
【问题描述】:

我正在尝试从目录中删除文件。

删除命令似乎有效,但文件并未被删除。

    Delete $fn

    IfErrors fail continue

    DetailPrint "Delete failed, file=$fn"
fail:
    MessageBox MB_ICONSTOP "Could not delete $fn"

    Abort
continue:
    DetailPrint "Deleted $fn"

我在运行后检查日志,它列出了所有文件都已删除,但是当我检查文件夹时,所有文件仍然存在。

有什么方法可以在删除执行后获取原因或消息文本?

【问题讨论】:

  • 顺便说一句:您对IfErrors fail continue 的使用使紧跟在IfErrors 检查之后的行无法访问,因为它将跳转到fail:continue: 标签。

标签: file nsis delete-file


【解决方案1】:

您能否再次检查路径是否正确。 InstallDirRegKey 之类的东西可能会将 $instdir 设置为您预期的文件夹之外的其他内容。

确保您的脚本中有RequestExecutionLevel 属性。

如果仍然无法删除,请尝试运行Process Monitor 以查看哪个文件失败以及原因...

【讨论】:

  • 在尝试其他解决方案之前尝试删除资源管理器中的文件,它们可能是兼容性重定向的剩余文件。
  • 路径绝对正确;我实际上是在尝试从三个不同的目录中删除文件,但没有任何效果。我已将 RequestExecutionLevel 设置为管理员。我可以通过 Windows 资源管理器删除文件。我安装了 ProcessMonitor,但很抱歉,它的变化太快了,我看不到发生了什么。
  • 您可以在进程监视器中设置过滤器。 channel9上也有一些教程视频...
  • 我确定没有其他进程访问这些文件。我使用 File.delete() 语句在 Java 中重新编写了该例程,并从 NSIS 脚本中调用了该例程。很有魅力。我不明白为什么 NSIS 删除不能这样做??
  • 这就是进程监视器可以提供帮助的原因,它应该在其中一列中显示错误...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 2018-10-18
  • 2010-09-06
  • 2014-11-24
  • 2011-08-03
  • 2018-12-24
相关资源
最近更新 更多