如何使用NSIS 3.10安装程序打包超过2GB的文件?
NSIS 3.10打包超过2GB文件的解决方案
你遇到的是NSIS 3.10版本对超大文件(>2GB)内存映射处理的已知bug,对应错误码#12345,以下是可行的解决办法:
- 升级NSIS版本:直接升级到3.11及后续版本,官方已修复该大文件内存映射问题,这是最彻底的解决方案。
- 拆分大文件后打包:如果暂时无法升级版本,将超过2GB的文件拆分为多个小文件,在NSIS脚本中用
File命令分别添加拆分后的文件,安装阶段通过Windows命令合并:Section CopyFiles "$INSTDIR\file_part1" "$INSTDIR\file_part2" "$INSTDIR\" ExecWait '"$SYSDIR\cmd.exe" /c copy /b "$INSTDIR\file_part1"+"$INSTDIR\file_part2" "$INSTDIR\original_file"' Delete "$INSTDIR\file_part1" "$INSTDIR\file_part2" SectionEnd - 清理并检查临时目录:手动清理系统临时目录(
%TEMP%)下的NSIS残留文件,同时确保构建用户对临时目录拥有完全读写权限,避免因临时文件异常导致映射失败。 - 调整压缩模式:将脚本中的固实压缩改为非固实或切换压缩算法,比如把
SetCompressor /SOLID lzma改为SetCompressor lzma或SetCompressor zip,降低内存占用压力(代价是压缩率可能下降)。
错误日志详情:
[MAKENSIS] Internal compiler error #12345: error mmapping datablock to 33584718.
[MAKENSIS] Note: you may have one or two (large) stale temporary file(s) left in your temporary directory (Generally this only happens on Windows 9x).
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

