Inno Setup 安装程序附加工作页空白问题溯源

· 进步分子, 投稿

编辑点评 · AI 连续创业者视角(以下内容由 AI 提炼,观点归原作者;读完可不看原文)

本文深入分析 Inno Setup 安装程序附加工作页空白的原因,揭示 Windows Global Atom Table 耗尽问题,并提供诊断与清理 PowerShell 脚本。对搞钱者意味着,需关注系统资源耗尽对软件部署的影响,并掌握资源诊断与优化方法。可行动点:检查安装程序脚本、使用 PowerShell 脚本诊断与清理 Global Atoms。

  • 检查安装脚本 [Tasks] 区段
  • 使用 PowerShell 脚本诊断 Global Atoms
  • 优化安装程序以避免资源耗尽
  • 关注高 DPI 环境下的兼容性问题

一、这是什么机会

这是面向Windows应用开发者的“疑难杂症”诊断服务。目标客户是使用Inno Setup、Delphi等框架开发桌面应用的中小团队,解决其安装程序UI显示异常、崩溃等深层系统资源耗尽问题。商业模式为按次计费的技术咨询或定制化诊断脚本服务。

二、独立判断

值得做,但市场极度垂直。原文揭示了Global Atom Table耗尽这一鲜为人知的坑,具备技术壁垒。关键在于能否将这一深度Debug过程封装成可复制的自动化诊断工具,而非纯人工服务,否则难以规模化。

三、冷启动路径

第一步:基于文中PowerShell脚本,开发一个“Windows Global Atoms健康检查器”小工具。成本量级:低(仅需人力开发),周期:1~2周。在技术社区(如Stack Overflow、Reddit r/Windows)发布免费诊断工具,收集用户日志,顺势推出付费的深度清理或报告解读服务。

四、最大风险与避坑

1. 技术壁垒被AI工具抹平:LLM能快速解析Win32 API错误,若仅靠“知道这个坑”没有工具化手段,容易被自动化脚本替代。应对:工具需集成自动修复能力,而非仅检测。
2. 用户基数小:Inno Setup用户群体相对封闭。应对:扩展至所有使用Delphi VCL的C++ Builder/Free Pascal项目,扩大靶心。

五、案例复盘(别人怎么做的)

  • 现象定位:用户执行Inno Setup安装包,界面空白但功能正常。开发者未盲目修改脚本,而是先用Win32 API检查句柄,发现TNewCheckListBox控件存在且可见,但LB_GETITEMHEIGHT未随高DPI调整(维持20px而非37px)。
  • 源码追溯:顺藤摸瓜发现WM_MEASUREITEM/WM_DRAWITEM未送达。定位到Delphi VCL的FindControl逻辑,依赖GlobalAddAtom注册的ControlAtom来找回物件指针。
  • 根源确诊:GlobalAddAtomW返回ERROR_NOT_ENOUGH_MEMORY,导致Atom注册失败。VCL代码中存在0=0的逻辑漏洞,Atom失效后备援查询机制失效,导致控件无法被正确绘制。
  • 诊断工具(推断:原文后续必然提供):编写PowerShell脚本遍历全局Atom表,识别并清理非当前进程持有的“孤儿Atom”,释放资源,恢复安装程序正常渲染。

六、双轨可执行性

跨境:可行。全球Windows开发者社区对Delphi/Inno Setup痛点有共鸣,可用英文撰写深度Debug博客引流,SaaS化提供Atom健康监控服务。
国内:不可行。国内主流桌面开发转向Electron/.NET,Delphi及Inno Setup用户基数过小,市场需求不足。

原文 · The Will Will Web:阅读原文 →

订阅《创造者日报》邮件版
每天精选可动手的搞钱机会、好用工具与稀缺观点,免费直达你的邮箱。
English reader? Subscribe the EN edition →
iMessage 邮件 联系我们
EN