Qt程序的打包发布现在已经可以通过其发布的Installer Framework框架来完成,通过修改一些配置文件即可实现。
首先,现在该框架官网提供1.3.0、1.4.0和1.5.0版本的下载(本文书写时),根据有新的谁他吗还用旧的准则,下载1.5.0版本(http://download.qt-project.org/official_releases/qt-installer-framework/1.5.0/),安装到你喜欢的目录下。
其次,打开安装目录,找到examples文件夹,我们以其中的tutorial下的工程作为模版来演示其使用过程。
下面来具体做一个例子以显示安装向导的生成方法。
1、Copy该目录或者自己创建一个目录(名字随意,比如sunshine),然后创建两个子目录(建议使用config和packages这两个名字,一目了然),关于这两个目录的含义,可传送到官网去查看(http://qt-project.org/doc/qtinstallerframework-1.5/index.html)。
2、进入tutorial目录的config子目录,可以开导config.xml文件,该文件用来自定义安装向导的UI和行为,这个文件应命名为config.xml并被放在config目录下(翻译自官网)。打开config.xml文件(下载个notepad++方便查看或修改):
- <?xml version="1.0" encoding="UTF-8"?>
- <Installer>
- <Name>你开发的软件的名字</Name>
- <Version>1.2.3</Version>
- <Title>安装向导的名字</Title>
- <Publisher>版权所有方名字(比如你的公司)</Publisher>
- <StartMenuDir>开始菜单的名字</StartMenuDir>
- <TargetDir>缺省的指定安装目录</TargetDir>
- </Installer>
下面是以我的打包用例的程序修改后的config.xml文件内容:
- <?xml version="1.0" encoding="UTF-8"?>
- <Installer>
- <Name>Weather</Name>
- <Version>1.0.2</Version>
- <Title>安装向导</Title>
- <Publisher>Sunshine</Publisher>
- <StartMenuDir>Weather</StartMenuDir>
- <TargetDir>@rootDir@/Program Files</TargetDir>
- </Installer>
3、创建一个包信息文件,此处我们仍修改历程目录下的包文件,tutorial\packages\com.vendor.product\meta目录下packages.xml,该文件作用如下:安装包包含内嵌的其他组件或者需要从远程获取组件时,就需要一个文件格式化并结构化的组织相关信息以供安装向导读取使用。编辑packages.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <Package>
- <DisplayName>The root component</DisplayName>
- <Description>Install this example.</Description>
- <Version>0.1.0-1</Version>
- <ReleaseDate>2010-09-21</ReleaseDate>
- <Name>com.vendor.product</Name>
- <Licenses>
- <License name="Beer Public License Agreement" file="license.txt" />
- </Licenses>
- <Default>script</Default>
- <Script>installscript.qs</Script>
- </Package>
其具体含义及使用方法请到官网查看(http://qt-project.org/doc/qtinstallerframework-1.5/ifw-component-description.html)。
注1:若想该组件包必须安装时,可在packages.xml文件中添加如下内容:<ForcedInstallation>true</ForcedInstallation>。
若该属性设置为false或者为设置,那么该组件就是可选安装的,其名字可以在<DisplayName>The root component</DisplayName>处修改。
如果做完了以上的准备工作,最后的内容应该如下:
1、文件夹下包括config和packages两个目录;
2、Config下包括一个config.xml文件,内容如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <Installer>
- <Name>App Name</Name>
- <Version>1.0.1</Version>
- <Title>安装向导</Title>
- <Publisher>公司名(版权商)</Publisher>
- <StartMenuDir>开始菜单所需展示的名字</StartMenuDir>
- <TargetDir>@RootDir@InstallationDirectory</TargetDir>
- </Installer>
3、packages目录下包括一个目录(组件集合的目录),此处我们定义为root,其下包括meta和data两个目录,你可以将你的应用程序打包成7z格式放在该目录下;meta目录下包括packages.xml和响应的script文件,packages.xml内容如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <Package>
- <DisplayName>App Name</DisplayName>
- <Description>Install App.</Description>
- <Version>1.0.1-2</Version>
- <ReleaseDate>2010-09-21</ReleaseDate>
- <Name>weather(needed)</Name>
- <Licenses>
- <License name="Beer Public License Agreement" file="license.txt" />
- </Licenses>
- <Script>installscript.qs</Script>
- <ForcedInstallation>true</ForcedInstallation>
- </Package>
然后,我们看一下script文件:
//该函数必须包含
function Component()
{
// constructor
}
//此处为安装的程序,在开始菜单处设置连接;
- //"@TargetDir@/sunshine.exe"指定exe的路径,//"@StartMenuDir@/sunshine.lnk"指定链接
- Component.prototype.createOperations = function()
- {
- // call default implementation to actually install README.txt!
- component.createOperations();
- if (installer.value("os") === "win") {
- component.addOperation("CreateShortcut", "@TargetDir@/sunshine.exe", "@StartMenuDir@/sunshine.lnk");
- }
- }
准备工作完成:
打开cmd(win+R),然后切换到你所建立的目录下,此处为,然后输入如下内容:
然后,打开该目录发现目录下出现setup.exe安装程序。
然后,你可以试着双击去安装,过程应该如下:
到此,安装完成,我们进到c盘下,看到我们的安装目录,
然后我们打开开始菜单观察:
安装过程完成。
后记:
上述的过程基本满足了打包安装程序的需求,可以简单的进行使用,若有更高级的需求
可以去查阅官方的文档进行修改配置文件和编写js文件,以达到自己的目的。祝好!
FROM: http://blog.csdn.net/sunshinwong/article/details/37764719