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

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

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

【问题讨论】:

    标签: windows inno-setup uninstallation


    【解决方案1】:

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

    RestartReplace(FileToDelete, '');
    

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

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

    【讨论】: