在NSIS做“RmDir / r $ INSTDIR”是否安全?

时间:2010-07-15 20:04:05

标签: installer nsis

我在NSIS的RmDir方法的文档中注意到了这个警告:

  

警告:使用RMDir / r $ INSTDIR   卸载程序不安全。虽然它   不太可能,用户可能会选择   安装到Program Files文件夹   所以这个命令会消灭掉   整个Program Files文件夹,包括   其他无关的程序   与卸载程序。

这让我感到害怕,因为到目前为止我还没有考虑过这种可能性,而且我的脚本中有这么一条线。但是,当我测试是否会通过将我的程序安装到包含预先存在的文件的预先存在的位置然后在其中运行带有RmDir /r /REBOOTOK $INSTDIR的卸载程序时发生这种情况时,现有文件保持不受影响。

这是一个过时的警告吗?我正在使用NSIS v.2.46。

由于

2 个答案:

答案 0 :(得分:7)

如果可以,RmDir / r将删除整个目录树,因此它是“不安全的”。有关仅删除您安装的文件的方法,请参阅http://nsis.sourceforge.net/Uninstall_only_installed_files

答案 1 :(得分:1)

没有/ r(递归)标志的目录上的RMDir将删除该目录(如果该目录为空)。在某些时候,他们已添加此功能,不确定何时。

NSIS Scripting Reference - RMDir