【发布时间】:2015-03-13 18:58:48
【问题描述】:
我正在使用 NSIS 创建一个安装程序,它将安装 100 多个文件。
我知道要指定您要安装的文件,您可以使用
File /r ..\release\*
效果很好。
但是我应该怎么做才能卸载这些文件(除了对我知道已安装的每个文件单独使用 Delete 命令。)
我查看了 RMDir,它似乎使用起来并不安全。还有 here 也没用。
感谢您的宝贵时间
【问题讨论】:
标签: installation nsis
我正在使用 NSIS 创建一个安装程序,它将安装 100 多个文件。
我知道要指定您要安装的文件,您可以使用
File /r ..\release\*
效果很好。
但是我应该怎么做才能卸载这些文件(除了对我知道已安装的每个文件单独使用 Delete 命令。)
我查看了 RMDir,它似乎使用起来并不安全。还有 here 也没用。
感谢您的宝贵时间
【问题讨论】:
标签: installation nsis
RMDir 是安全的。它使用了文档警告的/r 标志:
警告:在卸载程序中使用 RMDir /r $INSTDIR 是不安全的。 虽然不太可能,但用户可能会选择安装到程序 Files 文件夹,因此此命令将清除整个程序 Files 文件夹,包括与该文件夹无关的其他程序 卸载程序。用户也可以放除程序文件以外的其他文件 并希望他们被程序删除。解决方案是 可用于轻松卸载仅由 安装程序
鉴于此,我认为您只需手动删除所有子目录,然后删除父目录。我能想到这不起作用的唯一情况是当您的应用程序动态生成新文件夹时。如果是这种情况,即使是卸载日志也无济于事。
在您创建的子目录上使用 /r 也是完全可以的。问题是删除顶级安装目录,以及其中可能存在的所有内容。如果您的安装程序推出了一个名为images 的包含附加资产的文件夹,其中还包含子目录,那么没有理由
RMDir /r $INSTDIR\images`
会很危险。
【讨论】: