推荐的库/宏在卸载时删除已安装的文件

时间:2013-04-29 03:51:12

标签: installer nsis

您建议在运行卸载时删除仅安装文件的库或宏?

我知道这个问题已被问到很多,但我正在寻找关于最新和最容易使用的宏/库的建议。和过去一样,我使用NSIS Website上发布的旧宏来解决命令行参数解析等问题,并且在代码和实现方面存在问题。

我的理解是到目前为止还有2个(还有更多?):

Advanced_Uninstall_Log
Uninstall_only_installed_files

您使用和推荐哪个库或单个宏?

我希望我能够通过仅指定文件夹X(并且将安装其所有子文件)来安装文件,然后卸载程序将删除文件夹X中的所有子文件,但保留任何用户创建。

例如:

Section "install"
   File \r "FolderX" 

   # note how I dont do this..
   File \r "FolderX\filea.txt" 
   File \r "FolderX\fileb.txt"
SectionEnd

Section "un.uninstall"
   ${RemoveDir} "FolderX" 

   # The above hypothetical function will hopefully only delete the files in FolderX that I installed.
   Delete \r "FolderX\filea.txt" 
   Delete \r "FolderX\fileb.txt"
SectionEnd

1 个答案:

答案 0 :(得分:0)

我尝试了上面提到的两个,但都没有为我工作。 Advanced_Uninstall_Log运行良好,但是对于我所拥有的数据量,它在安装过程中增加了很大的延迟。

uninstall_only_installed_files不用于使用file / r进行递归安装。

我最终编写了一个python脚本,创建了两个宏,InstallFiles和UninstallFiles。在使用MakeNSIS构建NSIS安装程序之前,我使用批处理文件来调用此脚本并生成install_files.nsh。

有人在这里张贴了类似的剧本; http://nsis.sourceforge.net/Talk:Uninstall_only_installed_files