1. 程式人生 > >使用Qt installer framework制作安裝包(不知道是否適合Mac和Linux?)

使用Qt installer framework制作安裝包(不知道是否適合Mac和Linux?)

star spl config文件 priority class error ctu imu lac

一、介紹

使用Qt庫開發的應用程序,一般有兩種發布方式:(1)靜態編譯發布。這種方式使得程序在編譯的時候會將Qt核心庫全部編譯到一個可執行文件中。其優勢是簡單單一,所有的依賴庫都集中在一起,其缺點也很明顯,可執行程序體量較大,光Qt核心庫加起來就得十多兆。(2)制作安裝包發布。這種方式的原理也簡單,就是將可執行程序和其依賴的庫文件一起打包壓縮,制作成安裝包發布。制作安裝包的工具挺多,今天要說的是Qt官方的安裝包制作框架Qt installer framework.這個框架由Qt官方出品,廣泛應用於Qt library, Qt Creator等安裝包產品。網上搜了一下,相關教程貌似不多。

二、配置使用

下載並安裝好Qt installer framework之後,需要創建目標文件夾。所有需要打包的文件都放到這個文件夾下。我的文件夾內容如下:

技術分享

然後我們需要安裝如下的目錄組織結構分別創建文件夾,註意的是,一定要安裝這樣的順序組織文件夾哦。最簡單的方法是從Qt installer framework安裝目錄下的examples裏面復制一個出來,在此基礎上進行修改:

技術分享

我創建的根文件夾名稱為sc.在sc下面又創建了兩個子文件夾:config和packages。在config文件夾下創建一個config.xml文件,該文件用於定制安裝包的UI和行為,其基本格式如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <?xml version="1.0"?> <Installer> <Name>Some Application</Name> <Version>1.0.0</Version> <Title>Some Application Setup</Title>
<Publisher>Your Company</Publisher> <ProductUrl>http://www.your-fantastic-company.com</ProductUrl> <InstallerWindowIcon>installericon</InstallerWindowIcon> <InstallerApplicationIcon>installericon</InstallerApplicationIcon> <Logo>logo.png</Logo> <Watermark>watermark.png</Watermark> <RunProgram></RunProgram> <RunProgramArguments></RunProgramArguments> <RunProgramDescription></RunProgramDescription> <StartMenuDir>Some Application Entry Dir</StartMenuDir> <UninstallerName>SDKMaintenanceTool</UninstallerName> <AllowNonAsciiCharacters>true</AllowNonAsciiCharacters> <Background>background.png</Background> <TargetDir>@[email protected]/testinstall</TargetDir> <AdminTargetDir>@[email protected]/testinstall</AdminTargetDir> <RemoteRepositories> <Repository> <Url>http://www.your-repo-location/packages/</Url> </Repository> </RemoteRepositories> </Installer>

其中,name和version子元素是必需的,其他子元素則是可選的,並且順序可以任意。關於這些配置項的含義,在官方網站的鏈接上可以查看。

在上面的圖中我們可以看到,我們創建名為org.hust.simulator的文件夾。事實上,Qt installer framework引入了組件的概念。即每一個獨立模塊可以單獨放在一個組件component中,對於大型程序這樣清晰的結構有利於工程組織,降低復雜度。例子中比較簡單,只使用了一個組件,根據需要可以創建多個組件:

1 2 3 4 5 6 7 8 9 10 11 12 13 packages - com.vendor.root - data - meta - com.vendor.root.component1 - data - meta - com.vendor.root.component1.subcomponent1 - data - meta - com.vendor.root.component2 - data - meta

  可以註意到,在packages文件夾下每個組件都需要創建兩個子文件夾meta和data。meta目錄下用於存放一些配置文件,用於指定安裝和部署過程。在meta文件夾中至少需要一個package.xml及所有在該文件中引用到的資源文件,如腳本文件、界面資源、翻譯文件等。package.xml文件描述了一個組件的基本信息,其格式如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <?xml version="1.0"?> <Package> <DisplayName>QtGui</DisplayName> <Description>Qt gui libraries</Description> <Description xml:lang="de_de">Qt GUI Bibliotheken</Description> <Version>1.2.3</Version> <ReleaseDate>2009-04-23</ReleaseDate> <Name>com.vendor.root.component2</Name> <Dependencies>com.vendor.root.component1</Dependencies> <Virtual>false</Virtual> <Licenses> <License name="License Agreement" file="license.txt" /> </Licenses> <Script>installscript.qs</Script> <UserInterfaces> <UserInterface>specialpage.ui</UserInterface> <UserInterface>errorpage.ui</UserInterface> </UserInterfaces> <Translations> <Translation>sv_se.qm</Translation> <Translation>de_de.qm</Translation> </Translations> <DownloadableArchives>component2.7z, component2a.7z</DownloadableArchives> <AutoDependOn>com.vendor.root.component3</AutoDependOn> <SortingPriority>123</SortingPriority> <UpdateText>This changed compared to the last release</UpdateText> <Default>false</Default> <ForcedInstallation>false</ForcedInstallation> <Essential>false</Essential> <Replaces>com.vendor.root.component2old</Replaces> </Package>

  其中License節中指定了協議條款,file屬性指定了協議條款所在的文件。UserInterfaces和Translations節分別指定了界面資源文件和翻譯文件。Script節指定了腳本文件,在腳本文件中可以對安裝過程進行更為詳細的定制。樣例中其他元素名稱及值都比較容易懂,對著修改並不困難。全部選項可以上官網查看。

data文件夾中則用於存放我們實際需要打包的程序文件(*.dll, *.exe等),Qt installer framework在制作過程中用archivegen會將這些文件壓縮成7zip格式。安裝過程中自動從壓縮包中提取出數據文件。最後我的文件組織結構如下:

技術分享

為了方便,我將這個sc文件夾直接拖到了Qt installer framework的安裝目錄下,這樣就可以在命令行下直接使用binarycreator.exe這個工具了。準備工作完成,開始生成安裝包:

1 binarycreator.exe -c sc\config\config.xml -p sc\packages my_installer.exe -v

  命令運行完成,將在binarycreator.exe所在目錄下生成my_installer.exe文件。運行起來看看:

技術分享技術分享

技術分享技術分享

技術分享技術分享

三、小結

從上面看整個配置過程還算是挺簡單的,官方手冊也很齊全。不得不感嘆文檔健全就是好啊。以前都是使用其他的工具制作安裝包,這次嘗試了一下Qt installer framework制作安裝包還算滿意。

參考

  • http://doc.qt.io/qtinstallerframework/ifw-tutorial.html
  • http://www.cnblogs.com/dyllove98/archive/2013/06/17/3141316.html
  • http://www.qt.io/download-open-source/#

http://www.cnblogs.com/csuftzzk/p/qt-installer-framework.html

使用Qt installer framework制作安裝包(不知道是否適合Mac和Linux?)