软件打包安装工具第四篇(打包工具原理及技术)

本文介绍了软件打包工具采用的MV模型,该模型确保数据变化时视图自动更新。接着详细阐述了两种打包原理:方案一是直接将文件以二进制方式写入引导程序,方案二是先压缩文件再以资源形式嵌入。文章还提到了第一种方案的不足,如界面不美观和文件大小问题,并推荐了第二种方案的优点,如文件压缩和资源无限写入。
摘要由CSDN通过智能技术生成

1、MV模型

打包工具采用的是MV模型,采用此模型的原因是因为打包界面中打包列表、文件列表以及属性面板显示的是同一份数据,这就相当于多个视图一份数据,要实现同步显示。采用这种模型的好处是只要数据已发生改变,那么视图就会自动进行更新,这样就不需要我们再去关心显示不同的问题。想要了解MCV模型的童鞋可以看之前写的文章:交互式系统(MCV模型)
在这里插入图片描述

2、打包原理

打包也就是将多个文件按照一定的格式写到一个总的文件中,当然这个最后文件是一个exe,那么如何将其他的文件写到一个exe中呢,下面来为大家解惑。

2.1、方案一

首先得创建一个exe(引导程序),引导程序必须是可以执行的文件,不能将一个txt或者其他的文件改后缀名变成exe。然后用写二进制的方式进行打开,而其他被打包的文件则以读二进制的方式进行打开,最后一边读取二进制数据,另一边将读出来的数据写到引导程序中。在引导程序的最后要写入文件信息结构体,这个结构体保存了打包数据的结构以及文件的个数和大小。

struct BuilderData					//文件信息结构体
{
	char _fileCount[8];				//保存文件的个数
	char _fileSize[2048][8];		//一个二维表,用来保存每个文件的大小,文件释放的时候要根据这个表来获取文件的大小。
	char _filePath[2048][255];		//一个二维表,用来保存文件的目录结构;
}

细心的同学可以看到这个结构体的大小是固定的,这样的目的就是在文件释放的时候,首先从exe的结尾处读取这个结构体大小来获取文件信息。最后根据这个结构体来释放文件。

2.2、方案二

同样首先要有一个安装程序的引导程序,然后将所有要打包的文件都进行压缩处理,最后将这个压缩文件以资源文件的形式写到这个引导程序中。同样如果有其他的额外数据,比如软件的标题,软件的版本说明都可以以资源文件的形式写入引导程序中。压缩的好处可以将安装包的大小缩小。作为资源写入到引导程序中,这样的好处是可以无限写入文件。当然我们还可以往这个引导程序中添加其他要启动的程序,比如安装界面等信息。

3、结束语

之前我用了第一种方案实现了一个打包与安装的程序,但是效果不尽人意,因为这个引导程序界面是使用MFC写的,不好看是其一,而且打包出来之后的安装包也是特别的大,所以我才研究了第二种方案出来,第二个方案的好处可多了,比如我们可以用控制台程序写一个引导程序,然后在这个引导程序中把安装程序(我是使用了Qt写的)作为资源文件写入,最后再把需要安装的文件压缩包也作为资源文件添加到引导程序中。
在这里插入图片描述

软件打包安装工具第二篇(引导程序源码)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值