首页 > 其他分享 >Qt 安装包制作

Qt 安装包制作

时间:2023-09-21 11:24:15浏览次数:59  
标签:xml Qt 仓库 安装包 更新 组件 工具 制作 维护

Qt 安装包制作

新建模板小书匠

更新提醒

创建一个在线安装包,实现对用户的升级提醒。
以下是实现更新提醒的必要步骤:
1、将更新内容拷贝到package目录
2、在package.xml文件中,为元素增加对应值
3、使用repogen工具把更新内容创建为一个在线仓库,并在仓库的根目录生成Updates.xml
4、将仓库上传到服务器
5、使用binarycreator工具创建安装工具

配置更新

安装程序启动时下载 Updates.xml 文件,并对比文件中的版本与已安装版本。如果文件中的版本号大于已安装的本地版本,则安装程序就在列表中显示可用更新。
在文件package.xml中,通过 元素内为组件增加版本号。

重建仓库

创建仓库并将其上传至服务器,是提供更新的最简单的方法。更多信息,详见Creating Repositories

部分更新仓库

全量更新整个仓库,并非最优选项:

  • 仓库非常大,上传需要耗费时间
  • 仅上传有更新的组件

注意:repogen 在每次调用时都重建7zip类型的归档文件。因为7zip 保存所包含文件的时间戳(本次被移动或持拷贝的文件),SHA合计每个归档文件年变化。SHA合计值被用于识别下载的文档,也因此SHA需要匹配7zip。因为SHAs是存在Updates.xml文件,所以你被迫要更新整个仓库。而这可以通过使用repogen的 --update 选项来规避。

创建部分更新

要重新创建在线仓库,要使用 --update参数。他将某个已存在的仓库和仅有的变更的组件作为仅有的输入参数。整个全局配置也仅SHA合计被变更了。

上传部分更新

将以下项更新到服务器:
1、组件目录(通过类似:com.vender.product.updateed.updatepart)。
2、全局的更新文件 Updates.xml 被存于在线仓库的根路径。

注意 :项目上传的顺序很重要。如果在一个线上仓库更新,先更新组件,然后更新Updates.xml。包名包含版本号,因此用户直到更新全部上传前,收到的都还是旧包。

更改仓库

将现有更新仓库指向其它仓库,在当前库中修改Updates.xml。可以添加、替换、移除相应的库。

<RepositoryUpdate>
	<Repository action = " ... " OPTIONS />
	<Repository action = " ... " OPTIONS />
</RepositoryUpdate>

添加仓库

要更新仓库,在 下添加一个 子项元素,有以下代码:

<Repository action="add" url="http://www.example.com/repository" name="user" password="password"
             displayname="Example Repository" />

URL将象普通url那样解析 Updates.xml 。如果url是相对地,它将以当前文档为基础进行解析。displayname 指定了仓库在维护工具的设置页将如何被命名。name 和 password是可选填的,它们指定了仓库访问的特定授权。

移动仓库

要移除仓库,在元素下添加子元素:

<Repository action="remove" url="http://www.example.com/repository" />

url须精准匹配移除。

更新仓库

要以进行仓库更新,须添加 子元素到元素下,并带有如下配置:

<Repository action="replace" oldUrl="http://www.example.com/repository"
            newUrl="http://www.example.com/newrepository" name="user" password="password"
            displayname="New Example Repository" />

老的url必须是能匹配到的将被替换的精准url。新的URL是有效的新的目标url。

可重定位的仓库

有的项目包含多个仓库,创建可重定位的一系列仓库,应该使用相对地址。
所以,如果 generic 仓库的可用地址是:http://www.example.com/repositories/generic 且 Updates.xml包含 元素,元素有以下选项:

<Repository action="add" url="../module" name="user" password="password"
             displayname="Module Repository" />

那添加的仓库的被解析地址应该为 http://www.example.com/repositories/module ,所以仓库不包含它们的绝对位置的信息。
如果想要更改地址,可以仅拷贝如上代码的一系列仓库地址。建议将旧的通用存储库维护一段时间,并如上所述替换地址。您还可以为更新后的安装程序提供新的通用地址。
您可以为元素中的参数url、oldUrl和newUrl使用相对路径。

维护工具的更新提示

不需要额外的配置,在线与离线安装包都会安装维护工具,后续可以用该工具添加、更新和移除组件。在线安装包也有选项来指定通过在线仓库来安装维护工具。这使得可以使维护工具的提示更新,以利用Qt安装程序框架的最新功能和修复。
可以下载安装程序框架发行版的最新版本,其中包括binarycreator和installerbase工具的新版本。但是,要仅将特定于供应商的配置(如<Name><Title><Publisher>)更新到新的维护工具,可以使用用于创建原始安装程序的工具。

为维护工具创建组件目录结构

为最终用户制作维护工具的更新包,需要为维护工具准备一个安装组件,并为组件创建一个仓库。

注意:如果你在仓库中已经有一个维护工具的组件,可以跳过本节说明。

通常是为安装组件,创建一个包含metadata 和data目录的packages目录。在Package目录中,为维护工具创建子目录,根据自己喜好命名,如,org.qtproject.ifw.mantencetool,包含meta和data子目录。这些子目录后面会被填充。

编译更新资源

如果你想更改并应用配置,比如在用户更新维护工具时,更新title、publisher、或产品URL,你需要创建更新资源文件。否则本步是可选的。
首先,需要编译包含新的维护工具配置的资源文件及相关文件。

binarycreator -c config/config.xml -p packages -rcc

这个命令在当前路径下输出结果到update.rcc
packages目录参数指向之前为维护工具组件创建的目录。config.xml包含了维护工具配置。这可以是用于创建将使用维护工具仓库的在线安装程序的同一文件,也可以进行修改以更改一些配置元素,如窗口标题和产品版本。
关于配置文件中元素的更详细的说明,参见配置文件

获取维护工具

Linux和Windows的维护工具,与基于Qt安装程序框架所在目录中可执行文件相同,位于其安装目录下的bin文件夹中。对于MacOS来讲,可以使用binarycreator工具,在命令行中更换 --mt--create-maintenancetool参数来创建维护工具安装包。macOS的安装包的名字可以通过在config.xml中配置元素来实现。后期可根据需要对应用加签或添加证书。

binarycreator -c config/config.xml --mt

填充维护工具组件

在Linux和Windows,可从Qt安装程序框架的安装文件夹执行installerbase可执行程序,在MacOS中,应将维护工具的app bundle,拷贝到组件的data目录。如果在步骤编译更新资源里创建了update.rcc,也需要拷贝到data目录。meta 目录应该包含package.xml文件,里面有选择的包信息。也可将组件标记为,这样在运行更新时相应组件就会被自动安装。也可以将组件标记为,以在组件选择界面隐藏组件。
要了解关于package.xml 文件的更多信息,可查看包信息文件元素摘要

注意:如果要为已存在的维护工具提供更新,拷贝更新内容并覆盖package文件夹内已存在文件,同时在package.xml中加大元素 的值。

meta文件夹应该包含一个安装脚本,以指示安装程序,在默认的installerbase和更新资源文件之间有替换操作。实现此目标的最小安装脚本看上去象这样:

function Component()
{
    installer.installationStarted.connect(this, Component.prototype.onInstallationStarted);
}

Component.prototype.onInstallationStarted = function()
{
    if (component.updateRequested() || component.installationRequested()) {
        if (installer.value("os") == "win") {
            component.installerbaseBinaryPath = "@TargetDir@/installerbase.exe";
        } else if (installer.value("os") == "x11") {
            component.installerbaseBinaryPath = "@TargetDir@/installerbase";
        } else if (installer.value("os") == "mac") {
            // In macOs maintenance tool can be either installerbase from Qt Installer
            // Framework's install folder, or app bundle created by binarycreator
            // with --create-maintenancetool switch. "MaintenanceTool.app" -name
            // may differ depending on what has been defined in config.xml while
            // creating the maintenance tool.
            // Use either of the following (not both):

            // component.installerbaseBinaryPath = "@TargetDir@/installerbase";
            component.installerbaseBinaryPath = "@TargetDir@/MaintenanceTool.app";
        }
        installer.setInstallerBaseBinary(component.installerbaseBinaryPath);

        var updateResourceFilePath = installer.value("TargetDir") + "/update.rcc";
        installer.setValue("DefaultResourceReplacement", updateResourceFilePath);
    }
}

必须通过package.xml文件中的<Script>元素,指定安装脚本。

发布维护工具更新

经过以上准备,组件就应该上传到已存在或是新建的在线仓库中,以使其对终端用户可用。本节 “创建资源库”中有关如何创建资源库的说明也适用于包含维护工具更新的组件。

标签:xml,Qt,仓库,安装包,更新,组件,工具,制作,维护
From: https://www.cnblogs.com/sammy621/p/17719465.html

相关文章

  • win10 uwp 简单制作一个 Path 路径绘制的图标按钮
    本文告诉大家在UWP或WinUI3里面如何简单制作一个由Path几何路径图形绘制的图标按钮先在资源里面定义按钮的样式,重写Template属性,通过在Template里面放入Path绑定Data到内容从而实现让Path显示集合路径图形,代码如下<Stylex:Key="Style.TitlebarButton"......
  • Qt程序框架的运行机制
    Qt程序框架程序入口当我们新建一个QtWidget工程的时候,会自动生成四个文件:main.cppwidget.hwidget.cppwidget.ui其中main.cpp是整个程序的入口,文件中只有一个简单的main()函数。#include"widget.h"#include<QApplication>#include<QLocale>#include<QTranslator......
  • 小游戏小程序制作软件
      小游戏玩法多种多样,直播间互动游戏还是属于新模式,之前也会成为趋势。小游戏的制作开发,取决于用户的想法。这些软件不仅为开发者提供了便捷的制作工具,还极大地丰富了游戏和小程序的种类和功能。  一般来说,制作软件需要具备以下特点:  弹幕游戏的特点:玩家看起来小游戏......
  • Lumion12各版本软件安装包下载及安装教程 各个版本下载
    值得一提的是这些资源可以极大地帮助设计师创建出漂亮的场景,让客户更加直观地感受建筑和景观的效果。根据行业数据显示Lumion是一款功能强大的三维渲染软件,其中灯光系统是一个非常重要的部分。值得注意的是人们能够直接在自己的电脑上创建虚拟现实。通过渲染高清电影比以前更快,Lumi......
  • 制作麒麟V10的Docker镜像
    工作需要,客户想在K8s集群中搭建Greenplum集群,要求操作系统是麒麟V10。虽然数据库不建议安装在k8s中,但客户就是上帝,那就试试吧。本文讲解第一步:制作一个基于麒麟V10的Docker镜像。银行麒麟官网下载镜像。此次下载服务器版。使用麒麟V10的ISO镜像,最小化安装虚拟机。此步很简单,省略......
  • 全志T3(armhf) - QT5(qt5.15.10)编译与使用
    1.导入交叉编译器路径加入PATHexportPATH=$PATH:/opt/ext-toolchain/bin/我的交叉编译工具链放在/opt/ext-toolchain下ls/opt/ext-toolchainarm-linux-gnueabihfbingcc-linaro-5.3.1-2016.05-linux-manifest.txtincludeliblibexecsharels/opt/ext-toolchain......
  • 解决安装VS2022时,出现未能安装包"Microsoft.VisualCpp.Redist.14,version=14.32.31332
    解决安装VS2022时,出现未能安装包"Microsoft.VisualCpp.Redist.14,version=14.32.31332,chip”=x86"问题描述之前安装过MSSQLServer和VS2022,但是后来又卸载了。现在重装VS2022出现两个报错:无法安装Microsoft.VisualCpp.Redist.14,version=14.32.31332,chip”=x86无法安装Micr......
  • qt图片处理界面
     #ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QMainWindow>#include<opencv2/opencv.hpp>usingnamespacecv;QT_BEGIN_NAMESPACEnamespaceUi{classMainWindow;}QT_END_NAMESPACEclassMainWindow:publicQMainWindow{Q_OBJECT......
  • Ubuntu22.04运行Splash Docker镜像报错,cloud not load the Qt platform xcb in even t
    一、问题描述Ubuntu22.04运行SplashDocker镜像报错,cloudnotloadtheQtplatformxcbineventhoughitwasfound奇怪的地方在于,停止运行,重新执行同样的语句,即恢复正常。本文只做了问题记录,没有深入研究原因。sudodockerrun-it-p8050:8050scrapinghub/splash二......
  • eviews安装包-eviews中文版-eviews软件下载 各个版本下载
    Eviews官方安装版是一款很优秀的预测分析计量软件,Eviews不仅能够对用户的数据进行更好的对数据进行分析操作,而且还可以对联立方程进行线性和非线性的估计,有需要的朋友快来下载吧。软件地址:看置顶贴Eviews12软件新功能图形&表格[gf]2022[/gf]定义滑块控件让您能交互地为图形更改可......