首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在执行长Exec时,如何使Inno Setup看起来不被冻结?

在执行长Exec时,如果Inno Setup看起来被冻结,可能是因为它在等待某个进程完成。为了避免这种情况,可以使用以下方法:

  1. 使用ShellExec函数代替Exec函数。ShellExec函数可以在后台运行进程,从而避免冻结Inno Setup。
代码语言:txt
复制
ShellExec('open', 'your_command_here', '', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
  1. 使用CreateProcess函数创建一个新的进程,并使用WaitForSingleObject函数等待进程完成。这样可以在后台运行进程,并且不会冻结Inno Setup。
代码语言:txt
复制
var
  ProcessInfo: TProcessInformation;
  StartupInfo: TStartupInfo;
  CommandLine: string;
  ExitCode: DWORD;
begin
  CommandLine := 'your_command_here';
  FillChar(StartupInfo, SizeOf(StartupInfo), 0);
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow := SW_HIDE;
  if CreateProcess(nil, PChar(CommandLine), nil, nil, False, CREATE_NO_WINDOW, nil, nil, StartupInfo, ProcessInfo) then begin
    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess, ExitCode);
    CloseHandle(ProcessInfo.hProcess);
    CloseHandle(ProcessInfo.hThread);
  end;
end;

这两种方法都可以在后台运行进程,从而避免冻结Inno Setup。请注意,这些代码示例仅供参考,您需要根据您的具体情况进行修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

利用Inno SetupVS编译自动构建安装包

作者:傲慢与偏见 原文标题:利用Inno SetupVS编译自动构建安装包 原文链接:https://www.cnblogs.com/chonglu/p/17566940.html 欢迎网友们投稿技术类文章...Setup为例简单演示下如何构建安装包,以及Visual Studio中编译程序时自动去构建这个安装包。...操作演示 Tips:如果是想自动化构建,建议先从文章尾部开始看起,前面只是简单演示如何手动构建 2.1....安装包语言选择 官方默认是不提供中文语言包的,但官网上有第三方用户提供和维护了中文包,有需要的可以 Inno Setup Translations[3]下载,然后手动放进Inno Setup安装目录下的...Tips:为避免编写代码调试编译速度过慢,最好还是要在生成后事件中加上Release模式的判断,当解决方案中有很多个项目,或编译目录依赖文件过多的情况下,Inno Setup构建的会有点慢。

61020

inno setup读取注册表遇到的一个坑

公司现在要求发布插件制作一个安装包,让用户点击安装包后自动将插件相关文件拷贝到相应目录去。本来用inno setup来做一个安装包,顶多就是一个多目录安装的问题。...二、分析过程       本来拿到需求一想还挺简单的,本来就详细看过Inno setup的文档,读取注册表只需要调用RegQueryStringValue()即可读取注册表中指定项目。...事实上,inno setup的说明文档中还有另外一种方法可以尝试,也可以避免64bit系统产生的问题。...Update 2016-3-7:       64Bit系统上,将动态库文件拷贝到C:\WINDOWS\System32目录下,会自动重定向到SysWOW64目录下,导致程序运行异常。...//stackoverflow.com/questions/32727865/how-to-install-sys-file-into-c-windows-system32-drivers-with-inno-setup

2.7K60
  • Inno Setup 安装包脚本 Run 的 Flags 标记

    制作安装包的时候,可以 Inno Setup 安装包脚本的 Run 里面添加在解压缩安装包文件完成之后,整个安装结束之前执行指定的命令,是作为定制化最高的内容 有小伙伴觉得安装包脚本比较难写,也不熟悉...推荐的方法是自己写安装辅助 exe 程序,安装包解压缩完成之后调用辅助安装程序,这样安装逻辑可以放在安装程序,而安装程序本身可以使用自己熟悉的语言开发 Inno Setup 安装包脚本,可以 Run...After.bat 执行批处理,上面的 {app} 就是程序解压缩文件夹,也就是路径是绝对的 而想要执行命令,就会遇到如何执行命令的问题,有一些命令是让用户勾选才执行,如打钩点击完成启动 xx 程序,...,可以加上这个标记 skipifdoesntexist 如果传入的文件不存在,那么什么都不做就跳过 skipifnotsilent 如果当前不是静默安装模式,那么跳过 Inno Setup 安装包,...等待调用的命令暂停或退出 如果以上内容有不明白的,请点击官方文档 Inno Setup Help

    2.6K20

    常用软件打包类型及静默安装参数(nsis|msi|InstallShield|Inno)

    3、安装程序运行完毕后,打开你的 C:\Windows(或者 C:\WINNT)目录,然后找到 setup.iss 文件,把这个文件和你将要静默安装的程序 setup.exe 保存在同一个目录中。.../S 无提示模式,无用户选择的自动模式 /R 回滚模式,选择卸载回滚的选 /U 类似自动模式,但给出除了自定义/自动标题窗口之外的所有选项,标题可以命令行。...六、Inno Setup 使用 Inno 技术制成的程序安装包可以使用 /SILENT 和 /VERYSILENT 参数进行静默安装。...Inno Setup 制作的安装文件,请使用下面的明显,安装完直接重启: setup.exe /sp- /silent /norestart 如何判断哪个安装程序是用 Inno 技术打包的?...这种软件安装出现的第一个界面,在窗口标题栏左侧的图标上点击鼠标左键,然后再探出菜单上点击“About Setup”可以看见安装类型。

    15.1K22

    JavaScript中的四种枚举方式

    当一个变量有一个来自有限的预定义常量的值,使用枚举是很方便的。枚举使你不必使用魔法数字和字符串(这被认为是一种反模式)。 让我们看看在JavaScript中创建枚举的四种好方法(及其优缺点)。...以及如何冻结枚举对象以避免意外改变的问题。...基于Object.freeze()枚举 保护枚举对象不被修改的一个好方法是冻结它。当一个对象被冻结,你不能修改或向该对象添加新的属性。换句话说,这个对象变成了只读。...JavaScript中,Object.freeze()工具函数可以冻结一个对象。...然后创建超过3个实例抛出一个错误。 当然,最好让你的枚举实现尽可能的简单。枚举的目的是为了成为普通的数据结构。 总结 JavaScript中,有4种创建枚举的好方法。

    51340

    PyTorch-24h 06_迁移学习

    深度学习的世界里,答案通常为是。我们将了解如何使用称为 迁移学习(transfer learning) 的强大技术。 什么是迁移学习? 迁移学习允许我们将训练好的模型用于我们自己的问题。...让我们冻结 efficientnet_b0 模型的 features 部分中的所有层/参数。 注意: 冻结层意味着训练期间保持它们的状态。...例如,如果您的模型具有预训练层,冻结它们将是说,“训练期间不要更改这些层中的任何模式,保持它们原样。”...本质上,我们使用“特征”部分为“分类器”部分提供图像的基本表示,然后我们的“分类器”层将学习如何使基本表示与我们的问题保持一致。 • 较少的可训练参数 - 以前有 5,288,548 个可训练参数。...这些预测看起来比我们的 Tiny VGG 模型之前做出的预测要好得多。 6.1 Making predictions on a custom image 看起来我们的模型测试集的数据上做得很好。

    88120

    不影响开发体验,如何将单体 Node.js 变成 Monorepo

    因此,我们有三方面的建议,特别是当需要就迁移到 Monorepo 说服整个团队。 提前计划(短时间的)代码冻结:为了避免迁移时发生冲突,定义一个日期和时间,到时所有分支都必须合并。...将迁移计划中最关键的部分编写 bash 脚本,这样就可以确保开发工具迁移前后都能工作,包括持续集成管道上。这样应该可以打消怀疑者的疑虑,代码冻结的实际日期和时间上获得更大的灵活性。...例如, Dockerfile 中: - CMD exec node servers/monolith/dist/api-server/start.js+ CMD exec node --conditions...下一步:每个服务器一个包 我们已经逐项核对了“如何将影响降至最低”一节所列出的所有需求,现在可以冻结代码贡献、运行迁移脚本、并将更改提交到源代码存储库了。...使用迁移脚本让我们可以准备和测试迁移时避免代码冻结和 Git 冲突,确保构建和开发工具不会因为迁移脚本添加 CI 作业而遭到破坏。

    1.9K20

    如何用 Android vitals 解决应用程序的质量问题

    为了提供一个客观的质量衡量标准,使你可以轻松发现应用需要解决哪些稳定性问题,我们 Play Console 中添加了一个名为 Android vitals 的新模块。...这些事件发生在你的应用程序 UI 冻结的时候。发生冻结,如果你的应用位于前台,会弹出对话框让用户选择关闭应用或等待响应。从用户的角度来看,这种行为与应用崩溃一样糟糕。...应用程序无响应 那么,什么是应用程序无响应(ANR),它又是如何影响用户的呢? 对于用户来说,ANR 是当他们尝试与你的应用进行交互,该界面被冻结。...如果他们的设备受到来自其他应用程序同时读取和写入的巨大压力,而你的应用程序队列中等待执行“快速”读取操作又该怎么办?切勿主线程上执行读写操作。 主线程上执行长时间计算。...幸运的是,StrictMode 使查找 ANR 不再靠猜的。调试版本中使用这个工具可以捕获主线程上意外的磁盘和网络访问。

    2.3K10

    黑客滥用谷歌虚假广告传播恶意软件

    但根据ASEC的说法,当这些广告仍处于“活动”状态,如果用户不小心点击了横幅广告,仍然会跳转到下载恶意文件的页面。 类似的攻击活动中,Rhadamanthys 伪装成了企业常用的安装程序。...重定向到窃取下载 ASEC 的帖子详细介绍了黑客是如何精心策划的这一活动。...该活动使用的典型安装程序是 Inno Setup 安装程序或 Nullsoft Scriptable Install System (NSIS) 安装程序;具体而言,黑客使用了以下可执行文件:Notion_software_x64...ASEC警告称,由于 "所有提供追踪功能以计算广告流量的搜索引擎都可能被用来传播恶意软件",因此用户访问谷歌提供的广告链接必须保持警惕。...用户应 "注意访问网站看到的 URL,而不是广告横幅上显示的 URL",以避免落入恶意活动的圈套。

    16110

    【Redis】Redis 事务和事务锁

    业务场景一:多个客户端想操作同一数据,保证数据不被重复操作 视频中这个监视锁的作用好像有点局限,仅限于多个客户端想对同一数据进行相同的操作,保证数据不被重复操作。如果是想要对数据进行不同的操作呢?...补货的操作可能是一系列的操作,牵扯到多个连续操作,如何保障不会重复操作?...此时仍然输入exec,程序将不会执行exec指令,且放弃当前事务 对key添加监视锁,事务执行exec前如果key发生了变化,终止事务执行 watch key1 [key2…] #...业务场景二:setnx操作一个变量,然后再操作对应数据 很多客户同时抢购天猫超市的同一款商品,如何保证最后一件商品不被多人同时购买?...【超卖问题】 分析:  如果我们使用watch监视锁解决,此时一个客户端对商品进行监视,他购买如果其他客户端购买了(修改了商品数量),他就不能购买(exec),这是不符合逻辑的,只要商品有库存,大家应该允许同时购买

    17221

    Python 2 vs Python 3,究竟谁是性能之王?

    接下来,本文来自全球著名的桌面应用之一的 Dropbox 将分享他们要弃用 Python 2.0 的真实原因,以及如何将百万行的代码成功迁移至 Python 3。 ?...为支持所有组件,setup.py 脚本(内部的名字为 build-all.py)越来越大,越来越难以管理。 导火索就是我们与各个操作系统集成的方式。...当我们计划转换成 Python 3 ,我们面临着两个选择:一是改进冻结脚本中的依赖,以支持 Python 3(从而支持现代编译器)和平台相关的功能(如应用程序扩展),二是不再使用以 Python 为中心的构建系统...为支持它,我们进一步修改了定制版本的 Python 2,使之能正确 Visual Studio 2013 下编译。这些修改的代价进一步证明,我们转换到 Python 3 的决定是正确的。...有了这些,我们就能在启动 Dropbox 客户端动态选择 Python 版本了。这样就可以 CI 基础设施中设置额外的任务来针对 Python 3 运行单元测试和集成测试。

    1.8K20

    Docker in docker的一些故障检查过程

    通过docker exec 进入另行执行docker run命令测试内层是否可以正常启动 内层daemon:外层容器里的docker daemon 内层容器:内层daemon下辖的container 宋传义最近几周尝试...id=9787 未启用LVM的情况下会直接报错退出,无法从 /etc/sysconfig/docker-storage-setup 生成 /etc/sysconfig/docker-storage 配置文件...如果kill掉start_docker.sh启动的docker daemon,手工docker exec bash的命令行上另启动一个daemon,则一定出/sys/fs/cgroup/docker.service...看起来应该是由于docker run设置了容器的cgroup环境,所以容器内原生的进程都基础此设置;而docker exec没有这个初始化过程,只是直接送一个进程容器里执行,所以不同。...可能这就是宋传义CMD docker daemon和EXEC docker daemon之间来回切换的原因吧?

    24110

    基于QT的webkit与ExtJs开发CBS结构的企业应用管理系统

    我们知道javascript页面中执行都会用到window对象,比如,我们调用alert()方法,其实是调用window.alert()方法,使用document对象,其实是使用window.document...遇到的第一个问题并不是如何注册此对象,而是何时注册。...信号,刷新网页、打开新网页和加载嵌套的iframe页面(window对象初始化时),此信号都会被触发。...国内外有很多不错的打包工具,我推荐使用inno setup(http://www.jrsoftware.org/),它支持编写脚本来控制安装过程,使用LZMA压缩算法来打包程序(压缩效率非常高,是7-zip...使用的压缩算法),但它并不支持中文安装界面,目前社区有开发者提供了针对inno setup的中文语言包,使用起来也非常方便。

    3.4K80

    有人在代码里下毒!慎用 pip install 命令

    我想对此做进一步的探讨,因此本文中,我将逐步介绍如何安装和分析PyPI中的软件包并寻找恶意攻击活动。...如何查找恶意包 为了安装过程中运行任意命令,作者通常将代码添加到其程序包中的setup.py文件中。...那我们到底寻找什么呢? 如何把握重点 通常,任何重要操作发生都是由内核完成的,普通程序(如pip)通过内核执行重要操作是通过使用syscall来完成的。...为了使该工作正常进行,启动安装该软件包的Docker容器,我还启动了一个sysdig进程,该进程仅监测该容器中的事件。...我最终实现了一个看起来像这样的管道: 简而言之,我们将每个软件包名称发送到一组EC2实例(我希望将来使用AWS Fargate无服务器化容器解决方案或其他东西,但我现在也不知道Fargate怎么用,所以

    96610
    领券