微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

execwait 不起作用后删除命令

如何解决execwait 不起作用后删除命令

我正在创建一个安装程序。我的应用程序需要 VC++2013 运行时。所以我正在检查,如果没有找到 VC++ 运行时,我将从我的安装程序中安装它。 为此,我将 VC++ 运行时 exe 复制到 programfiles/myapplication 并使用

运行它
ExecWait '"$INSTDIR\vc.exe" /passive /norestart' $0
Delete "$INSTDIR\vc.exe"

但问题是 vc.exe 没有被删除。它保留在 programfiles/myapplication 文件夹中。

我使用 IfErrors 命令并发现发生错误。 请建议我如何解决这个问题

解决方法

ExecWait 总是 等待子进程结束,但仅仅因为进程结束并不意味着您可以删除 .EXE 文件。理想情况下,它应该意味着,但在某些情况下,资源管理器或反病毒软件会将文件锁定几秒钟。如果没有更多信息,很难说为什么不能删除,Process Monitor 可能会提供一些线索。

你可以试试

ExecWait '"$INSTDIR\vc.exe" /passive /norestart' $0
Sleep 2500
Delete "$INSTDIR\vc.exe"

但由于您无论如何都会删除它,我建议将其提取到 NSIS 会尝试为您清理的其他地方:

Section
InitPluginsDir
File "/oname=$PLUGINSDIR\vc.exe" "c:\myredistfiles\vc.exe"
ExecWait '"$PLUGINSDIR\vc.exe" /passive /norestart' $0
SectionEnd

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。