7z制作自解压安装包(转载)

news/2024/10/25 14:35:13/

像7z和winRAR这样的压缩工具都支持制作自解压的文件。所谓自解压的文件就是不需要目标机器上安装解压工具,通过运行压缩包自己即可解压出压缩包中的文件。下面我们就介绍一下如何利用7z的自解压功能制作应用程序安装包。

熟悉应用程序安装的朋友应该清楚,安装一个应用程序真的是可简单,简单到很简单,也可以复杂,复杂到很复杂很复杂。简单的诸如把几个文件放在一起打个压缩包,解压到目标机器就行了。复杂些的诸如vistual studio和office的安装,要安装这些工具对windows来说可谓是”伤筋动骨”,不仅要给windows打补丁还要安装各种辅助工具,各种程序组件,并且还要支持卸载,出了问题还要支持修复…

搞定简单的安装程序7z自然不在话下,毕竟是老本行嘛。但7z真能搞定那么复杂的安装程序吗?说7z自己能搞定确实太夸张了,但结合msi安装包,7z确实能够胜任复杂程序的安装。在制作安装包前我们先了解下7z的自解压功能。

自解压文件

通过UI操作可以很轻松的制作一个自解压的文件。唯一要做的就是在点击”确定”按钮前选择”创建自释放程序”选项。

选择后你会发现文件的后缀名直接变成 exe了。点击确定即可生成自解压文件。然后运行一下生成的test.exe文件,会提示你选择解压缩的目录。

下面我们看看怎么通过命令行的方式生成自解压文件。

7z.exe a test.exe –sfx testdir

OK,有了上面的基础后我们就可以动手制作安装包了。下面就通过两个例子分别介绍简单安装包和复杂安装包的制作过程。

制作简易安装包

所谓的简易安装包是指,在运行安装程序时把安装包中的可执行文件解压到某个目录,然后运行已解压的应用程序。

准备源材料

我们先写一个简单的demo程序TestApp.exe, 它有一个配置文件TestApp.exe.config。

然后需要下载7zs.sfx文件。7zs.sfx文件是7z为制作自解压的安装程序提供的一个文件。9.20的7zs.sfx文件在7-Zip extra包中,之后的版本都把这个文件放在了LZMA包中,并且改名为7zs2.sfx。

制作过程

首先使用7z把要安装的文打包:

7z a demo.7z TestApp.exe TestApp.exe.config

接着创建配置文件config.txt,内容如下:

复制代码

;!@Install@!UTF-8!Title="Demo app"ExecuteFile="TestApp.exe";!@InstallEnd@!

复制代码

最后执行下面的命令生成自解压的demoapp.exe程序:

copy /b 7zS.sfx + config.txt + demo.7z demoapp.exe

好了,运行demoapp.exe试试,TestApp.exe直接运行起来了。

优点

当我们的程序不止一个文件时,使用这种方式用户无需执行安装过程,且看不到一堆乱七八糟的文件,使用体验比较好。

制作复杂的安装包

前面我们提到,7z自身是无法完成复杂安装包制作的。但是msi安装包可以,msi安装包是windows平台上默认的安装程序的方式,多复杂的安装方式都能搞定。我们可以先生成一个msi安装包,然后像前面执行exe一样执行msi安装包。

有同学可能要跳起来了,既然执行msi安装包就可以完成安装任务,干嘛还要脱了裤子…,多此一举呢?这里面自然是有很多难言之隐的,比如运行msi的体验不好,要想把安装日志保存到文件中需要在命令行运行 msiexec.exe /i xxx.msi /log abc.log。要想以管理员权限启动msi也是做不到的,你只能先以管理员身份启动cmd,然后运行msiexec.exe /i xxx.msi… 使用7z则可以轻松搞定这些问题。

原材料

准备一个应用程序的msi安装包。和前面一个,我们也需要7zs.sfx文件。

制作过程

首先把msi文件打包到7z压缩包中:

7z a testmsi.7z myapp.msi

创建配置文件config.txt,内容如下:

复制代码

;!@Install@!UTF-8!Title="Demo msi"BeginPrompt="Do you want to install the xxx?"ExecuteFile="myapp.msi";!@InstallEnd@!

复制代码

最后执行下面的命令:

copy /b 7zS.sfx + config.txt + demo.7z demoapp2.exe

运行demoapp2.exe,首先会确认是否安装:

点击”yes”继续:

此时已经进入msi的安装过程中,根据提示进行配置即可。

优点

前面我们提到,要以管理员权限运行msi安装包是不太方便的,但包装成exe后就方便多了。

另外是为msi安装包传递参数。这里有两个问题,第一还是不方便。第二,让用户去指定安装参数是不太人道的!

我们可以通过下面的配置文件解决参数传递的问题:

复制代码

;!@Install@!UTF-8!Title="Demo msi"BeginPrompt="Do you want to install the xxx?"ExecuteFile="msiexec.exe"ExecuteParameters="/i myapp.msi /log c:\abc.log";!@InstallEnd@!

复制代码

好了,这下我们可以轻松拿到安装日志了。

对于最终用户来说msi是一种不常见的、专业的文件类型,包装成exe对用户来说也更友好。

安装文件的Icon

到目前为止我们只做的安装包都是这个样子的:

 

这可没有一点专业的感觉呀!至少应该有个Icon吧!

我们可以去网上找一个叫ResourceHacker的工具,用它可以把默认的Icon文件替换成我们自己的。下面的样子看起来是不是会专业一些:

 

总结,使用7z创建安装包既可以实现简单小巧的安装场景又可以解决一些复杂安装过程中的问题,真可谓老少咸宜!

作者:sparkdev

出处:http://www.cnblogs.com/sparkdev/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


http://www.ppmy.cn/news/319185.html

相关文章

第一章 OAuth2.0规范(史上最详细解释)——介绍

目录 一、简介 二、角色 二、协议流程 三、授权许可 1、授权码 2、隐式许可 3、资源所有者密码凭据 4、客户端凭据 四、访问令牌 五、刷新令牌 六、TLS版本 七、HTTP重定向 八、互操作性 九、符号约定 一、简介 在传统的客户端-服务器身份验证模式中,客…

什么是响应式设计

也叫响应式布局,响应式开发 实现不同屏幕分辨率的终端上浏览网页的不同展示方式。 响应式布局是根据设备屏幕宽度不同适当调整标签显示的布局,从而在每种设备屏幕宽度下呈现的界面是不同的 响应式布局 原理: 一个网站适配所有终端&#x…

【Redis总结-基础入门】

第一章 Redis基础 Redis总结-基础入门 第一章 Redis基础学习目标:1. Redis 简介1.1 NoSQL概念1.1.1 问题现象1.1.2 NoSQL的概念 1.2 Redis概念1.2.1 redis概念1.2.2 redis的应用场景 1.3 Redis 的下载与安装1.3.1 Redis 的下载与安装 1.4 Redis服务器启动1.4.1 Redi…

电脑常用快捷键大全(含Visual Studio快捷键操作)

目录 一、系统快捷键 二、常用系统命令 三、QQ快捷键 四、IE浏览器快捷键使用大全 五、Word 中的快捷键 六、Excel 中的快捷键 七、PowerPoint 中的快捷键 八、Visual Studio 九、Eclipse 十、Photoshop 十一、批处理指令 十二、安装操作系统 (此快捷操作对我们程…

python爬虫用什么电脑好_【Python】【爬虫】最近想买电脑,用Python爬取京东评论做个参考...

最近想换电脑,又有点不确定买哪一款。所以决定爬取京东上电脑评论,做个参考,并把最终结果绘制成词云图。 一、先来看下三款电脑评价的词云图 1 用Python爬取京东自营ThinkPad T490s的评论绘制成词云图 2 用Python爬取京东自营MacBook Pro的…

Volatility2安装使用以及CTF比赛题目(复现)

Volatility2安装使用以及CTF比赛题目(复现) 一 、简介二 、安装Volatility三 、安装插件四 、工具介绍五 、使用方法1.系统基本信息(imageinfo)2. 用户名密码信息(hashdump)3. 查看进程或隐藏或解链的进程&…

2021 河北取证比武决赛个人赛 题解 入侵溯源

个人赛 个人赛容器密码 BDH sha256全大写 A94686C845696F88525BB9E74FD7F5D38B6C12F7DDC7E5288C2F2D2201151F47 括号内表示该答案也可得分。26-30题每题4分,其余题目每题2分。 服务器部分 2021年5月 (对时间要敏感,做题时要摸清案情,摸清…

windows 用户的完美“瘦身”攻略

第一步就是开启 Administrator 帐户,先取得最高管理权限,方法: 右键桌面计算机--管理,本地用户和组--用户,右键 Administrator--属性,去除“帐户已禁用”前的勾,注销当前用户登录 Administrator…