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:阅读原文 →