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

打包工具原理及技术3、结束语
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写的)作为资源文件写入,最后再把需要安装的文件压缩包也作为资源文件添加到引导程序中 。
【打包工具原理及技术软件打包安装工具第四篇】软件打包安装工具第二篇(引导程序源码)