请把轻狂志网址 www.flighty.cn 加入收藏夹,其他俱为假冒,谨防被骗!赞助请点 这里!找东东请用右边的搜索 ===>
05 2013-09

NSIS:巧用!packhdr增加空白文件头部使7-Zip打开空白

作者:少轻狂整理 | 发布:2010-08-28 | 更新:2013-09-05 | 分类:部署 | Disposition | 热度:
为什么有些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版本下失效。