上一篇文章记录了QIFW
基本的使用,下面说说一些个性化配置功能.
主要包含两部分,config
和 packages
.
config
目录主要放置一些打包软件的整体配置,比如打包后安装过程中显示的软件名称、版本号、公司名称、界面图标等等信息;
packages
目录主要配置每个安装组件的信息。组件化安装配置是 QIFW
的一大特色,可以根据需求选择安装那些功能组件,这一点在我们安装 Qt
的时候很明显,可以选择安装 Qt
的那些模块。
每个组件有自己的一些配置信息,以及组件之间可以有依赖关系,形象的展示为树状关系.
比如目前有2个版本需要根据系统版本来进行选择安装,64位程序时不能安装在32位机器上的,在安装时需要根据当前系统版本自行判断安装那个版本,64位机器可以安装32和64位软件,32位机器只能安装32复位软件,
否则无法运行。
一个简单的配置字段如下所示,XML都添加了注释说明:
Installer Demo
1.0.0
Installer Demo one
devstone
http://www.kevinlq.com
windowIcon
windowIcon
logo
QIFWDemo
C:/QIFWDemo
false
Modern
false
false
这是一个安装Demo展示
SDKMaintenanceTool
false
注意上述备注的新加字段,RemoveTargetDirEnable
和 ComponentBtnEnable
是我自定义的字段,如果直接从官方下载 exe进行打包,可能会发生找不到字段的错误,这2个字段可以通过修改源码进行编译。
路径: QIFW\src\libs\installer\constants.h
static const QLatin1String scRemoveTargetDirEnable("RemoveTargetDirEnable"); /// 组件安装路径是否能够编辑
static const QLatin1String scComponentBtnEnable("ComponentBtnEnable"); /// 组件选择页面三个按钮是否能够点击
初始化:
Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix, ParseMode parseMode)
{
......
if (!s.d->m_data.contains(scComponentBtnEnable))
s.d->m_data.insert(scComponentBtnEnable, true);
......
}
void ComponentSelectionPage::initializePage()
{
/*! devstone add scRemoveTargetDirEnable [2019.06.14]*/
bool bEnableSelect = packageManagerCore()->valueVariant(scComponentBtnEnable).toBool();
d->setCompomentSelectEnable(bEnableSelect);
PackageManagerPage::initializePage();
}
注:详细代码可以到我的 GitHub 主页去下载.
packages
目录包含了2部分内容,meta
和data
(我们需要打包的一堆程序文件).
meta
配置主要有一下几个(一般常用的就前2个):
installer.qs
文件其实就是一个 js
脚本文件,我们可以使用 js
对安装软件进行二次开发定制,可以控制某个安装向导页面是否显示,以及显示后执行那些操作,又或者添加新的 ui
界面都可以通过
脚本进行控制.
通过脚本可以判断当前操作系统的类型,进而对安装的组件进行适配。
package.xml
可以配置每个组件的性质,比如版本、名字,是否默认,是否能够编辑.
x86-64 bit binaries
Binaries that require a x86-64 CPU.
1.0.0-1
2014-12-01
false
false
CompomentsEnable
字段是自定义字段,可以控制某个组件是否能够手动点击取消或者选择.
这里对安装路径进行了限制,不让用户修改,可以通过我新添加的字段进行配置,默认可以编辑.
如果没有配置该字段,默认可以编辑.
RemoveTargetDirEnable
上面是根据当前系统版本进行了限制.
作者:鹅卵石
时间: 2019年06月15日22:54:35
版本:V 0.0.1
邮箱:[email protected]
版权:本博客若无特别声明,均属于作者原创文章,欢迎大家转载分享。但是,
希望您注明来源,并留下原文地址,这是对作者最大的尊重,也是对知识的尊重。