在 NSIS 中与 Exec 一起使用后,是否有任何方法可以释放可执行文件及其依赖项

Is there any way to free the executable and it's dependencies after using it with Exec in NSIS

为了释放 DLL,我们在调用 DLL 时使用“?u”,如下所示。

System::Call "Launch.dll::IsDriverPresent() i.r0 ?u"

同样,有没有办法在使用后释放或卸载exe及其依赖项?

因为有时卸载后安装目录中的可执行文件及其依赖项仍然存在。

下面是我们用来调用 Exec 的行:

Exec '"$INSTDIR\ValidateDriver.exe" ON'

不,您不能卸载 .EXE。 .EXE 将被锁定,直到它的最终线程结束并且所有线程的所有句柄和进程本身都已关闭。

如果您 Kill/Terminate 进程并且它仍然处于锁定状态,那么很可能某些防病毒软件仍在锁定该文件。

您可以循环调用 DeleteSleep,重试 10 秒左右后,您可能不得不放弃或向用户显示一个 MessageBox。