gpt4 book ai didi

inno-setup - Inno 设置 : How to modify long running script so it will not freeze GUI?

转载 作者:行者123 更新时间:2023-12-03 16:50:59 24 4
gpt4 key购买 nike

我有一个 Inno Setup 安装,它执行一些耗时的“AfterInstall”操作。并且在执行此操作时,安装 GUI 完全卡住(似乎它的主事件循环未处理)。这不是一个令人愉快的最终用户体验,所以也许这个操作有可能不卡住 GUI?喜欢在单独的线程中执行它或定期调用诸如 handleGuiEventLoop() 之类的东西?

对于“ Action ”,我从我的 .dll 调用我的函数,该函数发出许多 HTTP 请求并将响应作为文件写入应用程序安装文件夹。这不是 CPU 密集型的,但可能需要几秒钟。或者,如果互联网连接较弱/没有可用的互联网连接,则可能需要一两分钟。并且安装程序 GUI 一直被卡住。

最佳答案

output progress pages旨在为长期运行的操作提供反馈。

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

有一个图书馆可以让你pass an Inno script function as a callback to a DLL , 这可能有用。您可能还想查看使用来自同一站点的 ITDownload 脚本,它允许您从 Inno 本身进行 HTTP 访问,避免中间人。

然而 Inno 本质上是单线程和 GUI-thread-affine 的,所以直接调用阻塞操作总是会阻塞 UI 而没有特殊的规定。可以在单独的线程中运行代码(但只能在 DLL 中,您必须非常小心);其他选项包括仅进行异步调用,或在内部维护 GUI 更新的调用,例如 Exec

关于inno-setup - Inno 设置 : How to modify long running script so it will not freeze GUI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14385393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com