但有时候我们不希望用户能自己解开安装程序,Inno可以给解包设置密码,但是NSIS不行,难道我们就没办法了吗?答案当然是否定的。在NSIS代码的起始部位添加以下两行:
!system '>blank set/p=MSCF< ' !packhdr temp.dat 'cmd /c Copy /b temp.dat /b + blank && del blank'
这种方法实际上就是生成一个空的CAB文件,然后与NSIS的文件头合并,造成这是一个CAB压缩包的假象,用7z强制打开的话自然是空的,因为7z此时打开的是那个实际上不存在CAB文件。
使用这种方法之前用NSIS制作的安装程序可以用7z轻松解开,如下图所示:
使用这种方法以后,打开则如下图所示:
怎么样,7z看不到那些安装文件了吧,这样也就实现了防止解包的目的,实现起来是不是很简单?
看到这儿看出点什么眉目来没?新增加的那两句话都是怎么工作的?如果学过批处理的同学应该很容易明白“cmd /c”的意思是在命令提示符下运行后面的命令。就像我们这里的“Copy /b temp.dat /b +blank&&del blank”。Copy程序的/b开关是指以二进制的方式合并,以前提到的最多的就是用在把一种文件隐藏在另一种文件里,相关的文章大家可以自己去搜一下。
这里的blank是我们在脚本里新增的两行里第一行生成的一个只有CAB头的空文件。所以第二行的意思就是说把NSIS安装程序的头部和一个空的CAB文件进行二进制合并,这样以EXE的方式运行的时候就会运行NSIS的头部,也就是启用正确的安装程序;用7z打开的时候则会打开到那个空的CAB文件,所以就显示为空白了。
阅读本文后您有什么感想? 已有 人给出评价!
- 0
囧 - 0
恶心 - 0
期待 - 0
难过 - 0
不错 - 0
关注
相关阅读
- 安装软件NSIS脚本详细教程12-03-26
- 如何用NSIS脚本:更改桌面壁纸或者背景11-12-01
- 关于NSIS的安装路径解释-修改nsis安装11-11-30
- nsis error是什么?及解决方法11-11-19
- NSIS插件全集简单介绍09-11-30
- NSIS制作安装文件教程09-11-30
- 用NSIS做软件安装包实例09-11-30
- 用NSIS做软件升级安装包教程09-11-30
- 最新评论
- 热门评论