求助:NSIS制作的setup.exe在Win10部分电脑闪屏阶段崩溃
NSIS安装程序Win10闪屏崩溃排查与解决
核心排查方向及解决办法
- 闪屏资源格式问题
NSIS闪屏一般通过!define MUI_SPLASHIMAGE指定资源文件,Win10部分版本对图片格式要求苛刻:- 替换为24位真彩色BMP(避免使用带Alpha通道的32位BMP,多数Win10环境下解析会异常)
- 若使用PNG格式,确保当前NSIS版本为3.x以上,旧版对PNG兼容性极差
- NSIS版本兼容性
- 检查当前NSIS版本,若为2.x系列,立即升级到NSIS 3.08+,新版本修复了大量Win10专属兼容性问题
- 查看崩溃电脑是否安装了特定Win10累积更新(如KB4512941这类可能影响安装程序运行的补丁),可临时卸载该补丁测试
- UAC与权限冲突
- 闪屏阶段禁止执行需要高权限的操作(如读取系统目录),这类操作极易触发UAC拦截导致崩溃
- 修改NSIS脚本,将闪屏逻辑仅限制为加载图片资源,所有权限相关操作移至闪屏结束后的初始化阶段
- 安全软件拦截
- 崩溃电脑大概率安装了小众杀毒、防火墙类软件,误将闪屏进程判定为恶意程序拦截
- 临时关闭安全软件后重新运行安装程序,若恢复正常,将setup.exe添加至安全软件白名单
- 从WER日志提取关键信息
重点关注日志中以下字段:Faulting module name:确认是NSIS核心模块(如nsis.exe)还是自定义闪屏模块崩溃Exception code:例如0xC0000005代表访问违规,通常是内存读取错误,大概率由资源损坏或脚本逻辑错误导致Offset:结合NSIS源码或调试工具可定位具体崩溃位置
快速试错清单
- 替换闪屏图片为标准24位BMP,避免特殊格式或压缩处理
- 升级NSIS到最新稳定版,重新编译安装包
- 若安装程序不需要管理员权限,在脚本中添加
RequestExecutionLevel user,避免UAC提前触发 - 开启NSIS的
LogSet命令生成详细运行日志,在崩溃电脑上执行安装程序,通过日志进一步定位问题
内容的提问来源于stack exchange,提问作者youbl
相关产品推荐
相关产品推荐

