Inno Setup:卸载过程中重新启动后删除文件夹

Posted

技术标签:

【中文标题】Inno Setup:卸载过程中重新启动后删除文件夹【英文标题】:Inno Setup: Deleting folders after restart during uninstallation 【发布时间】:2020-09-09 12:59:29 【问题描述】:

我有一个关于在使用 Inno Setup 卸载期间删除文件夹的问题。

在我的脚本中,我在一些文件上使用了uninsrestartdelete 标志,并在卸载的最后一步调用app 文件夹上的DelTree。有时,在系统重新启动之前我无法删除所有文件(那些是代码注入 DLL)。在这种情况下,我无法成功删除app 文件夹。在系统重新启动时删除app 文件夹的正确方法是什么?当我尝试删除它时,我可以确保文件夹中没有文件。

【问题讨论】:

【参考方案1】:

要在重新启动时安排文件或目录删除,请调用 RestartReplace function 并将 DestFile(第二个)参数设置为空字符串 ('')。

RestartReplace(FileToDelete, '');

对于目录,仅当它们为空时才有效。因此,您必须先调用RestartReplace 来获取目录中的所有文件,这些文件无法删除。

有关详细信息,请参阅 WinAPI function MoveFileEx 及其 MOVEFILE_DELAY_UNTIL_REBOOT 标志,它位于 Inno Setup RestartReplace 函数后面。

【讨论】:

以上是关于Inno Setup:卸载过程中重新启动后删除文件夹的主要内容,如果未能解决你的问题,请参考以下文章

关于Inno Setup卸载程序删除文件夹的问题

inno setup 之Deltree 用法

跪求inno setup补丁包更新后,卸载程序不能删除注册表?

Inno Setup 中如何设置卸载文件的位置

卸载失败,因为程序正在运行。如何在尝试删除之前让 Inno Setup 检查正在运行的进程?

防止 Inno Setup 在卸载时删除某些文件