使用Qt Installer Framework制作软件安装包

概述

Qt Installer Framework(缩写QIF)是Qt官方用于生成软件安装包的工具。包括Qt Creator和Qt Installer Framework自身的安装包都是由这个工具制作的。详细说明请访问QIF的官方文档。

环境

我使用的环境是Windows7 64位和Qt Installer Framework 2.0.3

下载

首先根据自己的平台(Linux或Windows等)去Qt官网下载Qt Installer Framework的安装包或者源码。为了简单起见,我下载是安装包。然后像普通软件那样双击安装。

目录结构

安装好后,并不是一个直接可用的图形界面软件。而是提供了一些可执行的工具程序(Windows下是exe文件),然后根据规则,利用这些工具生成安装包。
假设安装在D:,则生成目录D:QtIFW2.0.3,其中2.0.3是版本号。目录结构如下图所示。

1、bin

bin中包含的就是我们需要用到的工具。最简单地,我们只用其中一个,叫binarycreator.exe

2、doc

doc中包含帮助文档。文档的格式是网页(html)。也可以去官方网站上查看文档。文档是英文。不过很详细。

3、examples

examples中包含了很多Qt Installer Framework的例子。初学者只需要将例子作为模板,按照自己的情况修改即可。

4、Licenses

Licenses中包含了Qt Installer Framework的Licenses,例如LGPL等。

准备
1、目录结构

用QIF生成安装包时,必须先按照规范建立目录结构。
参考examples中的目录结构,例如examples/tutorial目录中的结构如下:

规范的目录结构中,包含一个config文件夹和一个packages文件夹。其中config文件夹中只包含一个config.xml文件,用于描述软件以及安装包的一些信息。packages文件夹包含了安装包的信息描述、行为描述以及数据。其中,packages中的每一个子文件夹都表示不同的软件,或者软件的一个模块或者部件,例如com.vendor.product1、com.vendor.product2等等。
其结构可能如下

-packages
    - com.vendor.root
        - data
        - meta
    - com.vendor.root.component1
        - data
        - meta
    - com.vendor.root.component1.subcomponent1
        - data
        - meta
    - com.vendor.root.component2
        - data
        - meta

对于简单的软件,可能只有一个模块,对应一个文件夹。
每个子文件夹下都有两个文件夹data和meta,前者包含了所有软件的数据,包括可执行文件、链接库文件、配置文件等等,将所有这些文件压缩成.7z压缩包后,放入此文件夹;后者包含了至少3个文件,installscript.qs、license.txt、package.xml,分别用于描述安装行为、许可信息、模块或软件的描述(用于选择模块的页面上),其中license.txt文件名可变,只需要在脚本中做相应修改即可。

2、config.xml

config/config.xml定义了安装程序的行为。
例子如下:



    Your App
    1.0.0
    Your App Installer
    You
    Your App
    @HomeDir@/Your App

其中各个标签的含义如下:

软件名称
版本号
安装程序窗口标题<br /> 发布者名称<br /> 要生成的windows开始菜单目录<br /> 默认安装路径</p> <p>config.xml支持的标签很多,不过多数都是可选的,只有上述这些是必须的。请参考官方文档,根据需要添加标签。</p> <p>3、data</p> <p>data文件夹下包含了你要发布的软件的全部数据文件,包括可执行文件、链接库文件、数据库、配置文件等等。将所有文件用.7z格式打包后,放在data文件夹下即可。</p> <p>4、meta/installscript.qs</p> <p>installscript.qs的语言类似于javascript,用于定义安装软件包的行为(如果软件有多个组件,每个分别配置),例如是否默认选中、是否生成开始菜单快捷方式、是否生成桌面快捷方式、是否有额外的安装步骤需要添加到常规步骤中。具体说明请参考examples中的例子以及官方文档。</p> <p>5、meta/license.txt</p> <p>将软件有关的许可信息,写在此文件中,会在安装过程中显示并要求用户同意。<br />文件名称可以修改,不过修改过后要修改package.xml中对应的脚本。</p> <p>6、meta/package.xml</p> <p>meta/package.xml定义了安装包在处理此部件时要显示的信息。<br />例子如下:</p> <pre class="sourceCode xml"><code class="sourceCode xml hljs"> The main component the main component of your app 1.0.0-1 2016-06-01 com.vendor.product script installscript.qs page.ui </code></pre> <p>其中各个标签的含义如下:</p> <p> 显示的名称<br /> 描述<br /> 部件的版本号<br /> 发行日期<br /> 部件名称(与文件夹名一致)<br /> 许可信息名称以及许可文件名<br /> 脚本文件<br /> 额外的界面(如果需要的话,而且需要去installscript.qs中配置)</p> <p>同样地,支持的标签很多,不过多数都是可选的,上述这些也不一定是必须的。请参考官方文档,根据需要添加标签。</p> <p>制作安装包</p> <p>完成上述准备工作后,使用binarycreator.exe工具生成安装包。<br />需要在命令行中操作。在开始菜单中搜索cmd,或按下win+r输入cmd回车,打开命令行。转到刚才准备好的目录中。<br />例如:</p> <pre class="cmd"><code class="hljs dos">C:> D: D:> cd QtIFW2.0.3examplesyourapp D: ....binbinarycreator.exe -c configconfig.xml -p packages YourInstaller.exe</code></pre> <p>其中,路径一定要对,YourInstaller.exe是安装包文件名,换成你想要的名称即可。</p> <p>:http://www.linuxidc.com/Linux/2017-08/146454.htm</p> <p><img decoding="async" src="https://12770.sou7.cn/2018/05/29/d38b692888e7c3b2190a7549dd00154c.gif" alt="" /></p> </div><!-- .entry-content --> <footer class="entry-meta entry-meta-footer"> <span class="cat-links cat-links-single">Posted in <a href="https://www.12770.cn/linuxbiancheng" rel="category tag">Linux编程</a></span> </footer><!-- .entry-meta --> </div><!-- .post-content-wrapper --> </article><!-- #post-## --> </div><!-- .post-wrapper-hentry --> <div class="entry-author"> <div class="author-avatar"> </div><!-- .author-avatar --> <div class="author-heading"> <h2 class="author-title"> Published by <span class="author-name">cloud</span> </h2> </div><!-- .author-heading --> <p class="author-bio"> <a class="author-link" href="https://www.12770.cn/author/admin" rel="author"> View all posts by cloud </a> </p><!-- .author-bio --> </div><!-- .entry-auhtor --> <nav class="navigation post-navigation" aria-label="文章"> <h2 class="screen-reader-text">文章导航</h2> <div class="nav-links"><div class="nav-previous"><a href="https://www.12770.cn/2694.html" rel="prev"><span class="meta-nav">Prev</span> <span class="post-title">Windows安装MySQL 5.7并修改初始密码</span></a></div><div class="nav-next"><a href="https://www.12770.cn/2700.html" rel="next"><span class="meta-nav">Next</span> <span class="post-title">怎么在一台树莓派上安装 Postgres 数据库</span></a></div></div> </nav> </div><!-- .post-wrapper --> </main><!-- #main --> </div><!-- #primary --> </div><!-- .row --> </div><!-- .container --> </div><!-- .site-content-inside --> </div><!-- #content --> <footer id="colophon" class="site-footer"> <div class="site-info"> <div class="site-info-inside"> <div class="container"> <div class="row"> <div class="col"> <div class="credits-wrapper"> <div class="credits credits-blog">© Copyright 2023 – <a href="https://www.12770.cn/">云技术在线</a></div><div class="credits credits-designer">Anther Theme by <a href="https://designorbital.com" title="DesignOrbital">DesignOrbital</a> <span>⋅</span> Powered by <a href="https://wordpress.org/" title="WordPress">WordPress</a></div> </div><!-- .credits --> </div><!-- .col --> </div><!-- .row --> </div><!-- .container --> </div><!-- .site-info-inside --> </div><!-- .site-info --> </footer><!-- #colophon --> </div><!-- #page .site-wrapper --> <div class="overlay-effect"></div><!-- .overlay-effect --> <script type='text/javascript' src='https://www.12770.cn/wp-content/themes/anther/dist/js/enquire.js?ver=2.1.6' id='enquire-js'></script> <script type='text/javascript' src='https://www.12770.cn/wp-content/themes/anther/dist/js/fitvids.js?ver=1.1' id='fitvids-js'></script> <script type='text/javascript' src='https://www.12770.cn/wp-content/themes/anther/dist/js/hover-intent.js?ver=r7' id='hover-intent-js'></script> <script type='text/javascript' src='https://www.12770.cn/wp-content/themes/anther/dist/js/superfish.js?ver=1.7.10' id='superfish-js'></script> <script type='text/javascript' src='https://www.12770.cn/wp-content/themes/anther/dist/js/custom.js?ver=1.0' id='anther-custom-js'></script> </body> </html> <!-- Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/ Object Caching 37/72 objects using memcached Database Caching using memcached (Request-wide modification query) Served from: www.12770.cn @ 2023-06-09 06:36:59 by W3 Total Cache -->