在NSIS中使用Exec后,有没有办法释放可执行文件及其依赖项

问题描述 投票:0回答:1

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

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

同样有没有办法释放或卸载exe和它使用后的依赖?

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

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

Exec '"$INSTDIR\ValidateDriver.exe" ON'
nsis
1个回答
0
投票

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

如果你杀死/终止进程并且它仍然被锁定,那么很可能有一些反病毒软件仍然锁定文件。

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

© www.soinside.com 2019 - 2024. All rights reserved.