文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页资讯教你一招 → 制作7z无法解压的NSIS安装程序

制作7z无法解压的NSIS安装程序

时间:2011/6/7 11:58:16来源:Fonlan作者:Fonlan我要评论(0)

用NSIS制作安装程序时,一般为了减小安装程序的体积,我们都会采用LZMA_Solid压缩算法。LZMA也就是7z赖以成名的开源压缩算法,具有相当不错的压缩比和压缩效率。但也由于这个原因,用NSIS脚本写的安装程序基本上都可以用7z直接解压开来从而得到里面的文件。

NSIS(脚本安装系统)V2.45 简体中文增强安装版
授权:免费软件 大小:10.2M 语言: 简体

但有时候我们不希望用户能自己解开安装程序,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文件,所以就显示为空白了。

相关视频

    没有数据

相关阅读 安装软件NSIS脚本详细教程如何用NSIS脚本:更改桌面壁纸或者背景关于NSIS的安装路径解释-修改nsis安装路径方法nsis error是什么?及解决方法使用NSIS于注册表内记录安装路径的相关代码NSIS插件全集简单介绍NSIS制作安装文件教程用NSIS做软件安装包实例

文章评论
发表评论

热门文章 电视盒子怎么看百度云迅雷9怎么关闭右侧 迅迅雷99.99下载不完怎么网易云音乐怎么上传歌

最新文章 2022支付宝万能福扫福微信迎新春状态怎么设 微信小老虎头像怎么设置 微信ID后面设置小老抖音压岁钱卡怎么获得2022 抖音压岁钱获取方微博隐私保护怎么设置 微博隐私保护功能完善今日头条2022年集卡活动开启时间 今日头条2

人气排行 智学网怎么登录 智学网怎么查分数 智学网统教你怎么写电子邮箱格式?以163和QQ邮箱为例腾讯大王卡用了后悔怎么办 腾讯大王卡值得办缺少或丢失xinput1_3.dll解决方法,xinput1应用程序无法正常启动0xc000007b解决方法快播关闭怎么办?快播不能用了怎么看片将pdf文件转换为word文件的最简单方法如何破解QQ空间密码和权限