为什么有些NSIS做的软件包用7-Zip打开无法看到里面的资源呢?下面我们来看一种实现方法:
!packhdr:
临时文件 命令
这个选项可以让编译器使用 EXE 加壳软件(例如 Petite 或 UPX) 压缩可执行文件头部。请先指定一个临时文件名(例如 "temp.dat")以及命令行(例如 "C:\program files\upx\upx -9 temp.dat")来压缩可执行文件头部。
!packhdr "$%TEMP%\exehead.tmp" '"C:\Program Files\UPX\upx.exe" "$%TEMP%\exehead.tmp"'
|
这个命令主要可以实现给自己的打包软件压缩可执行文件头部。
可以在你的脚本开始位置增加以下2行代码实现7-Zip打开空白:
!system '>blank set/p=MSCF<nul'
!packhdr temp.dat 'cmd /c Copy /b temp.dat /b +blank&&del blank'
|
效果如图:

如果你想增加一个有内容的7z压缩到可执行文件头部,那么在腰本开始位置增加下面这行代码就可以了(注意:需要准备一个名为轻狂志.7z的压缩文件)。
!packhdr temp.dat 'cmd /c Copy /B temp.dat /B +轻狂志.7z temp.dat'
|
效果如图:

轻狂注:经试验,以上方法在某些7Z版本下失效。