Open ReadMe Example
打开ReadMe示例
Using a component script to add a check box for opening the readme file to the final installer page.
使用组件脚本将打开自述文件的复选框添加到最终安装程序页面。
Open ReadMe illustrates how to use the Component()
function to add a check box to the installation finished page and to open the readme file if end users select the check box.
Open ReadMe演示了如何使用Component()函数向安装完成页面添加复选框,并在最终用户选中复选框时打开自述文件。
Configuring the Example Installer
配置示例安装程序
The installer configuration file, config.xml, in the config
directory specifies the text and default values used in the installer:
config目录中的安装程序配置文件config.xml指定了安装程序中使用的文本和默认值:
- The
<Name>
element sets the application name and adds it to the page name and introduction text. - <Name>元素设置应用程序名称并将其添加到页面名称和介绍文本中。
- The
<Version>
element sets the application version number. - <Version>元素设置应用程序版本号。
- The
<Title>
element sets the installer name and displays it on the title bar. - <Title>元素设置安装程序名称并将其显示在标题栏上。
- The
<Publisher>
element sets the publisher of the software (as shown in the Windows Control Panel, for example). - <Publisher>元素设置软件的发布者(例如,如Windows控制面板所示)。
- The
<StartMenuDir>
element sets the name of the default program group for the product in the Windows Start menu. - <StartMenuDir>元素在Windows“开始”菜单中设置产品的默认程序组的名称。
- The
<TargetDir>
element sets the default target directory location to be within theIfwExamples
directory in the home directory of the current user (because it uses the pre-existing variable,
@HomeDir@, as part of the value). For more information, see Predefined Variables. - <TargetDir>元素将默认目标目录位置设置为当前用户主目录中的IfwExamples目录内(因为它使用预先存在的变量@HomeDir@作为值的一部分)。有关详细信息,请参见预定义变量。
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>Open Readme Example</Name>
<Version>1.0.0</Version>
<Title>Open Readme Example</Title>
<Publisher>Qt-Project</Publisher>
<StartMenuDir>Qt IFW Examples</StartMenuDir>
<TargetDir>@HomeDir@/IfwExamples/openreadme</TargetDir>
</Installer>
Creating the Example Package Information File
创建示例包信息文件
The installer package information file, package.xml, in the meta
directory specifies the components that are available for installation:
meta
目录中的安装程序包信息文件package.xml指定了可用于安装的组件:
- The
<DisplayName>
element sets the human-readable name of the component. - <DisplayName>元素设置组件的人类可读名称。
- The
<Description>
element sets the human-readable description of the component. - <Description>元素设置组件的人类可读描述。
- The
<Version>
element sets the version number of the component. - <Version>元素设置组件的版本号。
- The
<ReleaseDate>
element sets the date of release for this component version. - <ReleaseDate>元素设置此组件版本的发布日期。
- The
<Default>
element is set totrue
to preselect the component in the installer. - 将<Default>元素设置为true,以在安装程序中预选组件。
- The
<Script>
element specifies the file name of the JavaScript file that is loaded to perform operations. - <Script>元素指定加载以执行操作的JavaScript文件的文件名。
- The
<UserInterfaces>
element specifies the file name of the installer page (.ui file) to use. - <UserInterfaces>元素指定要使用的安装程序页面(.ui文件)的文件名。
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>Open readme</DisplayName>
<Description>Show checkbox asking whether to open Readme at the end</Description>
<Version>1.0.0-1</Version>
<ReleaseDate>2013-01-01</ReleaseDate>
<Default>true</Default>
<Script>installscript.qs</Script>
<UserInterfaces>
<UserInterface>readmecheckboxform.ui</UserInterface>
</UserInterfaces>
</Package>
Opening Files After Installation
安装后打开文件
In installscript.qs, we use the Component()
function to connect to the installationFinishedPageIsShown
signal when the installation is complete and to the installationFinished
signal when the end users click Finish (Done on macOS):
在installscript.qs中,我们使用Component()函数在安装完成时连接到installationFinishedPageIsShowed信号,并在最终用户单击Finish(macOS上的Done)时连接到installationFinished信号:
function Component()
{
installer.installationFinished.connect(this, Component.prototype.installationFinishedPageIsShown);
installer.finishButtonClicked.connect(this, Component.prototype.installationFinished);
}
We call the component::createOperations() function to override the default method for creating operations:
我们调用component::createOperations函数来覆盖创建操作的默认方法:
Component.prototype.createOperations = function()
{
component.createOperations();
}
If the installation is successful, we call the installer::addWizardPageItem() function to replace the last installer page with a custom page that contains the OpenReadMe check box:
如果安装成功,我们调用installer::addWizardPageItem()函数,将最后一个安装程序页面替换为包含OpenReadMe复选框的自定义页面:
Component.prototype.installationFinishedPageIsShown = function()
{
try {
if (installer.isInstaller() && installer.status == QInstaller.Success) {
installer.addWizardPageItem( component, "ReadMeCheckBoxForm", QInstaller.InstallationFinished );
}
} catch(e) {
console.log(e);
}
}
We set the readMeCheckBox
to checked
by default and use the QDesktopServices::openURL() function to open the readme file:
我们将readMeCheckBox设置为默认选中,并使用QDesktopServices::openURL()函数打开自述文件:
Component.prototype.installationFinished = function()
{
try {
if (installer.isInstaller() && installer.status == QInstaller.Success) {
var checkboxForm = component.userInterface( "ReadMeCheckBoxForm" );
if (checkboxForm && checkboxForm.readMeCheckBox.checked) {
QDesktopServices.openUrl("file:///" + installer.value("TargetDir") + "/README.txt");
}
}
} catch(e) {
console.log(e);
}
}
Generating the Example Installer
生成示例安装程序
To create the example installer, switch to the example source directory on the command line and enter the following command:
要创建示例安装程序,请在命令行上切换到示例源代码目录,然后输入以下命令:
- On Windows:
..\..\bin\binarycreator.exe -c config\config.xml -p packages installer.exe
- On Linux or macOS:
../../bin/binarycreator -c config/config.xml -p packages installer
This creates the installer to the current directory.
这将创建当前目录的安装程序。
Files:
- openreadme/config/config.xml
- openreadme/openreadme.pro
- openreadme/packages/or.qtproject.ifw.example.openreadme/data/README.txt
- openreadme/packages/or.qtproject.ifw.example.openreadme/meta/installscript.qs
- openreadme/packages/or.qtproject.ifw.example.openreadme/meta/package.xml
- openreadme/packages/or.qtproject.ifw.example.openreadme/meta/readmecheckboxform.ui
© 2021 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. The Qt Company, Qt and their respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.