在NSIS中与Exec结合使用后,有什么方法可以释放可执行文件及其依赖项

时间:2019-04-03 14:46:42

标签: nsis

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

如果您杀死/终止了该进程,但该进程仍被锁定,则很可能是某些防病毒软件仍在对该文件进行锁定。

您可以循环调用... <Application.Resources> <myns:SvgIcon x:Key="MyIcon" Data="...PathData..." /> ... /*Default Icon Style*/ <Style TargetType="myns:SvgIcon"> <Setter Property="Foreground" Value="Black" /> </Style> /*Style icons used as content*/ <Style TargetType="Control" x:Key="BlueIcon"> <Style.Resources> <Style TargetType="myns:SvgIcon" BasedOn="{StaticResource {x:Type myns:SvgIcon}}"> <Setter Property="Foreground" Value="Blue" /> </Style> </Style.Resources> </Style> ... </Application.Resources> ... ... <MenuItem Header="Do Stuff" Icon="{StaticResource MyIcon}" Style="{StaticResource BlueIcon}" /> ... <StackPanel> <Label Content="{StaticResource MyIcon}" Style="{StaticResource BlueIcon}" /> <Button Content="{StaticResource MyIcon}" Style="{StaticResource BlueIcon}" /> </StackPanel> ... ,重试10秒钟左右后,您可能不得不放弃或向用户显示MessageBox。