Inno Setup:如何修改长时间运行的脚本,以免它冻结GUI?

gri*_*yvp 3 inno-setup

我有一个Inno安装程序安装执行一些耗时的'AfterInstall'操作.执行此操作时,安装GUI完全冻结(似乎未处理主事件循环).这不是一个愉快的最终用户体验,所以也许这种操作可能不会冻结GUI?喜欢在单独的线程中执行它还是定期调用类似的东西handleGuiEventLoop()

Mir*_*ral 5

输出进度页面被设计用于在长时间运行操作提供反馈.

但为了使其有效,您必须能够通过定期调用此页面上的方法来保持Inno更新您当前的进度.

有一个库可以让你传递Inno脚本函数作为DLL的回调,这可能是有用的.您可能还想查看使用同一站点的ITDownload脚本,这样您就可以从Inno本身进行HTTP访问,避开中间人.

然而,Inno本质上是单线程和GUI线程仿射,因此直接调用阻塞操作将始终阻止UI而无需特殊规定.可以在单独的线程中运行代码(但只能在DLL中,并且必须非常小心); 其他选项包括仅进行异步调用,或者内部维护GUI更新的调用,例如Exec.


归档时间:

查看次数:

2352 次

最近记录:

6 年,6 月 前