NSIS - 删除除一个文件以外的所有文件

时间:2010-12-01 06:33:45

标签: nsis

任何人都可以澄清一下,卸载时我需要删除除License文件之外的Installation文件夹中的所有内容。如何使用NSIS脚本执行此操作?

由于 问候, RoboAlex。

2 个答案:

答案 0 :(得分:4)

而不是像安德斯的第三点那样打开文件,我会这样做:

Rename $INSTDIR\license.txt $PLUGINSDIR\license.txt
RMDir /R $INSTDIR # Remembering, of course, that you should do this with care
CreateDirectory $INSTDIR
Rename $PLUGINSDIR\license.txt $INSTDIR\license.txt

根据文件到达文件的时间无法删除,RMDir /R可能会将其中的大部分删除,因为我相信它会在无法删除内容时停止;这种方式将彻底摆脱它。这也会丢失目录统计信息,但这可能并不重要。

尽管如此,我还是会推荐Anders的前两个解决方案之一。它们更精确。

答案 1 :(得分:3)

在我的头顶,有3种方法可以做到这一点:

  • 在编译时使用!system etc
  • 生成的列表上,对一个文件使用Delete
  • 在运行时使用FindFirst / FindNext / FindClose并删除除基于文件名的许可证以外的所有内容
  • 有点破解,但你应该可以打开许可文件进行写入/追加,然后删除/ RMDir将无法删除该文件,因为它有一个打开的句柄。