7z制作自解压安装包

像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,内容如下:

;[email protected]@!UTF-8!

Title="Demo app"

ExecuteFile="TestApp.exe"

;[email protected]@!

最后执行下面的命令生成自解压的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,内容如下:

;[email protected]@!UTF-8!

Title="Demo msi"

BeginPrompt="Do you want to install the xxx?"

ExecuteFile="myapp.msi"

;[email protected]@!

最后执行下面的命令:

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

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

点击”yes”继续:

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

优点

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

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

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

;[email protected]@!UTF-8!

Title="Demo msi"

BeginPrompt="Do you want to install the xxx?"

ExecuteFile="msiexec.exe"

ExecuteParameters="/i myapp.msi /log c:\abc.log"

;[email protected]@!

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

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

安装文件的Icon

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

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

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

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

时间: 2024-10-24 15:52:35

7z制作自解压安装包的相关文章

使用WinRar软件制作程序安装包

之前我写过使用好压软件打包程序,见随笔: 使用好压(HaoZip)软件打包EverEdit制作安装程序 - Fetty - 博客园http://www.cnblogs.com/fetty/p/4907969.html 这次研究了下WinRar制作程序安装包,和好压大同小异. 使用的winrar版本为5.3,百度搜索一下,很容易下载到的. 打开需要制作安装包程序的目录,不要包含上层目录,点击“添加”按钮,配置压缩参数. “常规”选项中,勾选 “创建自解压格式压缩文件”和“锁定压缩文件”. 切换到“

DevExpress控件库 开发使用经验总结3 制作项目安装包

2015-01-27 使用DevExpress控件包开发C/S项目完成后,部署前需要制作本地安装包.本文还是使用“SetupFactory”安装工厂来制作安装包.在以前的系列文章中详细介绍过该工具的使用,请参考http://www.cnblogs.com/SavionZhang/p/4106338.html. 实际情景:SetupFactory V9.0.3.DevExpress14.1.8.依赖程序.Net Framework 4.0. 由于项目中引用了很多DevExpress控件库中的DLL

ubuntu下打包制作deb安装包

最近写了一个小程序,打算做成deb发布,折腾了两天,终于找到了一个简单的deb制作方法 1.首先要编译好程序,获得程序的可执行文件 2.新建一个文件夹,例如在用户目录下新建mydeb文件夹 3.在mydeb文件夹建立如下结构的文件夹和文件 |--mydeb |----usr |----lib |--可执行文件(安装后,就在你的/usr/lib生成相应的可执行文件) |----share |----icons |--deb.png(图标文件生成到/usr/share/icons/) |----ap

installshield制作的安装包卸载时提示重启动的原因以及解决办法

原文:installshield制作的安装包卸载时提示重启动的原因以及解决办法 有时候卸载installshield制作的安装包程序,卸载完会提示是否重启电脑以完成所有卸载,产生这个提示的常见原因有如下几种:1. 卸载时,程序正处于运行状态2. 卸载时,程序文件夹处于打开状态3. 卸载时,有文件被别的进程调用,或者在进程中,常见情况如dll在进程中 一般来说解决办法是针对第三种情况的,解决办法是卸载时强制杀进程,比如在OnMaintUIBefore或者OnUninstall里写上强制杀进程的代码

使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)

阅读目录 一.配置安装包依赖项 二.自定义dll(测试数据库连接) 三.总结 正文 前言:上篇使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)介绍了下使用Advanced Installer配置IIS和Web.config的过程,操作起来是相对比较简单的,只要知道了博主提供的方法,相信都不是问题,其实博主当初寻找相关方法配置IIS和Web.config的时候也是费了九牛二虎之力的,毕竟资料太少,只能各种方式挨个尝试一遍,解决问题之后回过头来看,发现

C#进阶系列——使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)

前言:大过年的,写篇文章不容易,还是给自己点个赞~~年前找了下.net安装包的制作方法,发现Visual Studio自带的制作工具使用起来非常麻烦,需要单独下载安装包,并且什么激活认证等等屁事相当麻烦,最坑爹的是它的自定义dialog使用起来有很多的局限性,所以找了很久,终于找到了Advanced Installer.摸索了两天,算是掌握了一些基本的方法,在此做个记录.相信对于需要使用的园友来说绝对是干货,不信可以看看. 本文原创地址:http://www.cnblogs.com/landea

InstallShield制作升级安装包

1. 在General Information里,修改Product Version为新的版本号,此版本号应大于旧的版本号.点击Product Code右面的{...},获取一个新的Product Code.不要更换Upgrade Code! 2."解决方案资源管理器"中选择"1.Organize Your Setup",然后选择"Upgrade Paths",在左边的"Upgrade Paths"中点击右键,选择"

【模板下载】innosetup 制作.net安装包的模板

这个模板是在博客园和CodeProject上的代码修改而成的,感谢原作者 模板是2个 innosetup 制作.net 2.0 安装包的模板 innosetup 制作.net 4.0 安装包的模板 下载地址 innosetup 制作.net 2.0 安装包的模板 代码如下: ; 脚本由 Inno Setup 脚本向导 生成! ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #define MyAppName "应用程序名称" #define MyAppVersi

Ubuntu制作离线安装包

一.应用场景 Ubuntu在不能上网情况下,又需要安装软件或更新系统 二.离线安装包制作 在一台能正常上网的Ubuntu系统上,安装需要的软件包 $sudo apt-get -d install XXX 安装完成后,此时软件已经下载到了/var/cache/apt/archives目录下. 生成依赖关系 新建目录 $sudo mkdir /root/OfflinePackage 拷贝deb软件包到上新建的目录 $sudo cp -r /var/cache/apt/archives /root/O