Qt Installer Framework使用教程:

步骤一:
    下载并安装Qt Installer Framework工具
    http://download.qt.io/official_releases/qt-installer-framework/ 
    将安装目录添加到环境变量,如安装D盘时D:\Qt\QtIFW-4.5.0\bin
步骤二:
    将测试例子(如D:\Qt\QtIFW-4.5.0\examples\tutorial)拷贝到某一目录如:D:\Qt\test                           config 目录: 配置                                                                                                                             packages 目录: 安装包,里面可以有多个文件夹,一个文件夹代表一个安装组件(比如一个程序需要自身和数据库软件。就分为两个组件),每个文件夹下分data 和 meta 目录,data就是程序压缩包,meta是配置相关      
步骤三:
    修改版本号(config\config.xml, packages\com.vendor.product\meta\package.xml)
    修改程序packages\com.vendor.product\data\xxx包中要安装的程序为最新。
步骤四:
    打开Qt 5.12.4(MSVC2017 64-bit) 切换目录到打包文件夹: D:\Qt\test。
    运行命令:binarycreator --offline-only -c config/config.xml -p packages xc2000-V1.0.3.0.exe

一些配置文件与函数说明:
Config目录中配置文件说明:
元素                        是否必需    描述
Name                        必需        正在安装的产品名称
Version                        必需        安装软件的版本,格式要求:`[0-9]+((.
Title                        可选        标题栏上显示的安装程序的名称
Publisher                    可选        软件发行商(如Windows控制面板中所示)
ProductUrl                    可选        指向包含您网站上产品信息的网页的网址
Icon                        可选        自定义安装程序图标的文件名。通过附加'.icns'(OS X),'.ico'(Windows)或'.png'(Unix)后缀来查找实际文件。 已弃用 ,请改用
InstallerApplicationIcon    可选        自定义安装程序图标的文件名。 通过附加'.icns'(OS X),'.ico'(Windows)后缀来查找实际文件。 在Unix上没有此功能
InstallerWindowIcon            可选        安装程序应用程序的自定义窗口图标的文件名(PNG格式)
Logo                        可选        用作QWizard::LogoPixmap的徽标的文件名
Watermark                    可选        用作QWizard::WatermarkPixmap的水印的文件名
Banner                        可选        用作QWizard::BannerPixmap(横幅)的文件名(仅由ModernStyle使用)
Background                    可选        用作QWizard::BackgroundPixmap的图像的文件名(仅由MacStyle使用)
WizardStyle                    可选        设置要使用的向导样式 ("Modern"(现代), "Mac", "Aero"或"Classic"(经典))
WizardDefaultWidth            可选        像素单位的默认向导(Wizard)宽度,设置的横幅图像(Banner Image)将覆盖在此
WizardDefaultHeight            可选        以像素为单位设置向导的默认高度,设置水印图像将覆盖在此
TitleColor                    可选        设置标题和字幕的颜色(采用HTML颜色代码,例如“#88FF33”)
RunProgram                    可选        如果用户接受操作,则在安装程序完成后执行命令。要提供应用程序的完整路径
RunProgramArguments            可选        传递给中指定的程序的参数。您可以添加多个子元素,每个子元素为指定一个参数
RunProgramDescription        可选        安装后运行程序的复选框旁边显示的文本。如果设置,但没有提供说明,用户界面将显示运行程序替代
StartMenuDir                可选        Windows开始菜单中产品的默认程序组名称
TargetDir                    可选        安装的默认目标目录。在Linux上,这通常是用户的主目录(/home/username/)
AdminTargetDir                可选        具有管理员权限的安装的默认目标目录。仅在Linux上可用,通常不建议在管理员用户的主目录中安装
RemoteRepositories            可选        远程存储库列表。此元素可以包含多个子元素,每个子元素包含指定用于访问存储库的URL的子元素。有关更多信息,请参阅配置存储库
MaintenanceToolName            可选        生成的维护工具的文件名。默认为maintenancetool。将附加平台特定的可执行文件扩展名
MaintenanceToolIniFile        可选        用于生成维护工具配置的文件名。默认为MaintenanceToolName.ini
RemoveTargetDir                可选        如果卸载时不删除目标目录(TargetDir),请设置为false
AllowNonAsciiCharacters        可选        如果安装路径可以包含 非ASCII字符 ,请设置为true
RepositorySettingsPageVisible    可选    设置为false来 隐藏 设置对话框中的 存储库设置页面
AllowSpaceInPath            可选        如果安装路径 不能包含空格字符 ,请设置为false
DependsOnLocalInstallerBinary    可选    如果要禁止从外部资源(如网络驱动器)安装,请设置为true。 这可能有意义,例如,安装程序非常大。该选项仅在Windows上使用
TargetConfigurationFile        可选        目标的配置文件名。默认是components.xml
Translations                可选        用于翻译用户界面的语言代码列表。要添加多个语言变体,请指定多个子元素,每个元素指定语言变体的名称。该项可选。有关详细信息,请参阅翻译页
UrlQueryString                可选        此字符串必须采用key = value形式,并且将附加到存档下载请求。这可以用于向托管存储库的web服务器传输信息
ControlScript                可选        自定义安装程序控制脚本的文件名。请参阅控制脚本
CreateLocalRepository        可选        如果要在安装目录中 创建本地存储库 ,请设置为true。此选项对在线安装程序没有影响。存储库将自动添加到默认存储库列表


Package目录中配置文件说明:
元素                        是否必需    描述
DisplayName                    必需        组件的可读名称
Description                    必需        组件的可读描述。将描述的翻译指定为附加说明标记的值,并将xml:lang属性设置为正确的语言环境。如果找不到与语言环境匹配的翻译文件,且存在未翻译的版本,则使用未翻译版本。否则,将不显示该描述
Version                        必需        组件的版本号格式为:`[0-9]+((.
ReleaseDate                    必需        此组件版本发布的日期
Name                        必需        此组件的域标识
Dependencies                可选        此组件依赖的组件的标识符列表(使用逗号分割)。您可以指定版本号,以破折号(-)分隔。您可以使用比较运算符(=, >, <, >= or <=)为版本号添加前缀。请记住,您必须使用字符引用&lt;来避开左尖括号(使用<来插入<,使用&lt; =来插入<=)。更多相关信息,请参阅组件依赖关系
AutoDependOn                可选        此组件具有自动依赖性的组件的标识符列表(逗号分隔)。当且仅当 满足所有指定的依赖关系 时,才安装组件。如果组件对其他组件有自动依赖性,则组件树中组件旁的复选框将隐藏,并自动进行选择。如果组件以前未安装,则只有当选择此列表中的所有组件进行安装时,才会选择安装组件。如果组件已安装,则当选择此列表中的 至少一个组件 进行卸载时,将选择卸载组件。有关更多信息,请参阅组件依赖关系
Virtual                        可选        设置为true可从安装程序中隐藏组件。请注意,在根组件上设置此选项不起作用
SortingPriority                可选        组件在组件树中的优先级。 树从最高优先级到最低优先级排序,在顶部具有最高优先级
Licenses                    可选        安装用户接受的许可协议列表。要添加几个许可证,请添加几个子元素,每个子元素指定许可证名称和文件。 如果有针对此组件列出的翻译,安装程序还将查找翻译的许可证。 它们需要具有与原始许可证文件相同的名称,但是具有添加的区域设置标识符。 例如,如果许可证文件被称为license.txt并且指定了德语翻译,且安装程序还包含一个license_de_de.txt文件(将在德语系统上安装时显示)
Script                        可选        被加载的脚本文件名。有关详细信息,请参阅添加操作
UserInterfaces                可选        要加载的页面列表。 要添加多个页面,请添加多个子元素,每个子元素指定页面的文件名。有关详细信息,请参阅添加页面
Translations                可选        要加载的翻译文件的列表。要添加多个语言变体,请指定多个子元素,每个子元素指定语言变体的文件名。有关详细信息,请参阅翻译页
UpdateText                    可选        如果这是一个更新组件,则将说明添加到组件描述中
Default                        可选        可以设置为true、false、脚本名。true:在安装程序中预先选中组件。此操作仅适用于没有可见子组件的组件。脚本名:在运行时解析执行脚本,计算出布尔值(boolean)。将脚本文件名称添加为此文件中
    100


function Component()
{
    // default constructor
}

Component.prototype.createOperations = function()
{
    // call default implementation to actually install README.txt!
    component.createOperations();

    if (systemInfo.productType === "windows") {
        component.addOperation("CreateShortcut", "@TargetDir@/Test/Test.exe", "@HomeDir@/Desktop/Test.lnk");
        component.addOperation("CreateShortcut", "@TargetDir@/Test/Test.exe", "@StartMenuDir@/Test.lnk");
        component.addOperation("CreateShortcut", "@TargetDir@/UnTest.exe", "@StartMenuDir@/UnTest.lnk");
    }
}

TestDB目录下配置如下



    数据库
    Test程序支持的数据库.
    5.7.29
    2014-08-25
    false
   
    90

function Component() {
    installer.finishButtonClicked.connect(this, Component.prototype.installationFinished);
}

Component.prototype.createOperations = function()
{
    component.createOperations();
}

Component.prototype.installationFinished = function()
{
    if(component.isInstalled())
    {
        try 
        {
            if (installer.isInstaller() && installer.status == QInstaller.Success) 
            {
               installer.execute("@TargetDir@/install-db.bat");
            }
        } 
        catch(e) 
        {
            console.log(e);
        }
    }
}
 


 

你可能感兴趣的:(c++)