そろそろQt5がリリースされそうな頃合いで楽しみですね。
さて、Qt Quick2で作られたアプリを配布するときのパッケージ作成についてまとめました。
やること自体は以前の「QML(Qt)アプリケーションの配布方法(Windows編)」と同じですがDLLの構成が変わっています。
/// 今回のポイント ///
・必要なDLLを同梱する必要がある
・DLLの入手元はコンパイラを「MinGW」と「VisualC++」のどちらを使うかで変わる
・Qt Quickアプリケーションの場合は、qmlファイルも同梱する
・Qtプラグインを使用していないつもりで必須なプラグインがある
・QMLでインポートするモジュールはすべてDLLが必要
/// DLLの入手パス ///
Qt DLL : <Qt5Dir>\bin
Import Module : <Qt5Dir>\imports
Plugin : <Qt5Dir>\plugins
VisualStudio2008 : C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist
(x86用とかamd64用とかが保存されてますので適宜。。。)
/// DLLとQMLの配置場所 ///
基本的に実行ファイル(*.exe)と同じフォルダに配置します。
QMLファイルはビルドフォルダにできる「qml」フォルダを丸ごと実行ファイルと同じフォルダにコピーします。
実行ファイル : <App>\*.exe
必須DLL : <App>\*.dll
Qtプラグイン : <App>\<qtplugins>\*.dll
QMLモジュール : <App>\<qmlmodule>\*.dll
QMLファイル : <App>\qml\<project name>\*.qml , *.js
/// コンパイラに依存して必要なDLL ///
・MinGW
mingwm10.dll
libgcc_s_dw2-1.dll
・VC++
msvcr90.dll
msvcp90.dll
/// QtQuick2として必要なDLL ///
・メイン
QtCore5.dll
QtGui5.dll
QtNetwork5.dll
QtQml5.dll
QtQuick5.dll
QtV85.dll
・インポートモジュール
QtQuick.2\qmldir
QtQuick.2\qtquick2plugin.dll
・プラグイン
platforms\qminimal.dll
platforms\windows.dll
/// 必要なDLLの確認方法 ///
「Dependency Walker」というアプリを使用して確認します。
Dependency Walkerを実行して確認したい自分のアプリの実行ファイル(*.exe)を開きます。
不足しているDLLがあると印がつきますので不足しているDLLを実行ファイルと同じディレクトリに置いて開き直します。
/// Qtプラグインを使用している場合に必要なDLL ///
DBアクセスや画像処理、文字コード関連の処理などなど。
たくさんあるので幾つか例をピックアップします。
・画像関連
imageformats\qgif4.dll
imageformats\qico4.dll
imageformats\qjpeg4.dll
imageformats\qmng4.dll
imageformats\qsvg4.dll
imageformats\qtiff4.dll
・DBアクセス
sqldrivers\qsqlite4.dll