Inno Setup:卸载期间重启后删除文件夹

Inno Setup: Deleting folders after restart during uninstallation

我对使用 Inno Setup 在卸载过程中删除文件夹有疑问。

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

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

RestartReplace(FileToDelete, '');

对于目录,只有当目录为空时才有效。所以你必须先为目录中的所有文件调用RestartReplace,这些文件不能被删除。

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