Qtのクロスプラットフォームアプリケーション:配布

配布キットの作成は、プログラムの公開準備の最終段階です。 残念ながら、この分野での標準化の問題はありません。さらに、一部のOS(指を指すことはありません)では、一般的な形式の動物園があります。



したがって、理想的には、ディストリビューションが必要です。



Qtインストーラーフレームワーク



公平を期すために、Qtにはもちろん、インストーラーを作成するための独自のクロスプラットフォームフレームワークがあることに注意してください。 リポジトリから追加のコンポーネントをダウンロードできる通常のインストーラーとオンラインインストーラーの両方を作成できます。 ウィジェットを挿入し、新しいアクション(ページ)を追加することもできます。 Qt Creatorをインストールした可能性があります。これは、このシステムが動作していることを意味しています。 ただし、インストーラーを作成するときは、xml構成を作成し、コマンドラインでキーを操作する必要があります。一般に、特に他のソリューションと比較して、構成のエントリしきい値はかなり高くなります。 しかし、 ドキュメントでコンポーネント選択ページをスキップする方法についての言及を見つけることはありませんでした。 一般に、非常に具体的な製品が得られましたが、マイナス面は、このインストール方法がWindowsプラットフォームでのみネイティブと見なされることです。





したがって、このOSのインストーラーを作成するための多くのオプションがありますが、私はかなり便利なオープンソース製品であるInnoセットアップに決めました。 その中にインストーラーを作成することは、「next-on-next-done」インストール自体よりも複雑ではありません。









作成ウィザードを通過した後の出力は、プログラムの次のバージョン用に簡単に変更できるスクリプトです。



Linux



歴史的に、Linux用ソフトウェアはリポジトリを通じて配布され、各プログラムの配布は、実際のプログラムファイル、依存関係に関する情報、およびその他のメタデータを含む特別な種類のパッケージです。 メインストリームの.debおよび.rpm以外に、標準化のすべての試みにもかかわらず、個々のLinuxディストリビューションに固有のその他の多くの形式があります 。 Canonicalは.click形式を試しています。これはOS Xのアプリケーションバンドルに似ていますが、現時点では、このオプションを主要なものの中から検討するのは時期尚早です。 Ubuntuはデスクトップ上の事実上のLinux標準なので、このプラットフォームでのパッケージの作成について説明します。 パッケージシステムの高度な機能は未使用のままであるため、ほとんどの場合、サードパーティのソフトウェア配布パッケージには機能に必要なすべてのものが含まれていることに注意してください。



.tar.gz


ディストリビューションの共通点は何ですか? もちろんコマンドシェルです! そのため、目的のパッケージ形式に関係なく、任意のシステムで実行されるスクリプトインストーラーを実行します。 システムが新しいプログラムがインストールされたことを「見る」ためには、各ファイルがそれに代わる必要があります。 最小セットは、アイコン、実行可能ファイル、および拡張子が.desktopの特別な構成で構成されます。



アイコン: 仕様によると、Linuxではアイコンのソースをアセンブリに変換する必要はありません。次の形式のサブディレクトリにあるファイルを(インストール中に)コピーするだけです。

/ usr / share / icons / hicolor / RxR / apps、Rはアイコンの解像度

または

/ usr / share / icons / hicolor / scalable / apps-.svg形式のベクター画像を設定する場合
ただし、これだけではありません。各アイコンテーマには独自のキャッシュがあり、更新しないと、新しいアイコンを見ることができません。 キャッシュはパッケージの通常のインストール中に自動的に更新されますが、次のコマンドを実行して手動で更新することもできます。

gtk-update-icon-cache /usr/share/icons/hicolor



実行可能ファイル
/usr/bin



。デスクトップ構成ファイル
/usr/share/applications



プログラムに関するすべての情報(アプリケーションの名前と説明、そのカテゴリ、アイコンの名前など)が含まれます。



例:

 [Desktop Entry] Name=iStodo Comment=iStodo is an organizer for students with scheduling and planning features. GenericName=Organizer for students Exec=istodo Icon=istodo Categories=Office;Qt; Terminal=false Type=Application Version=1.2 Name[ru]= iStodo Comment[ru]=     GenericName[ru]=  
      
      





標準を読んでもっと学ぶことができます。



非標準のインストール方法でサードパーティのプログラムをインストールするときの良いルールは、すべてのファイルを/opt/myapp



サブディレクトリに保存することです。ここには、アンインストーラも配置する必要があります。



そのため、最終的に次のスクリプトを取得しました。次のスクリプトは、その隣にバイナリ、.desktopファイル、削除スクリプト、アイコンのあるフォルダー(サイズのサブディレクトリが含まれている)を想定しています。

install.sh
 #!/bin/bash iconsPath="/usr/share/icons/hicolor" desktopPath="/usr/share/applications" installPath="/opt/myapp" linkPath="/usr/bin/myapp" #Check user if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" exit 1 fi #Remove old version if [ -d $installPath ]; then $installPath'/uninstall.sh' > /dev/null fi echo "myapp install..." mkdir -v $installPath cp -v myapp $installPath cp -v uninstall.sh $installPath cp -v myapp.desktop $desktopPath ln -sv $installPath'/myapp' $linkPath chmod a+x $linkPath echo "---" cp -v icons/32x32/myapp.png $iconsPath'/32x32/apps' cp -v icons/48x48/myapp.png $iconsPath'/48x48/apps' cp -v icons/64x64/myapp.png $iconsPath'/64x64/apps' cp -v icons/128x128/myapp.png $iconsPath'/128x128/apps' cp -v icons/256x256/myapp.png $iconsPath'/256x256/apps' gtk-update-icon-cache /usr/share/icons/hicolor update-desktop-database echo "...finished!"
      
      





プログラムを削除するにはスクリプトが必要なのは論理的です:

uninstall.sh
 #!/bin/bash iconsPath="/usr/share/icons/hicolor" desktopPath="/usr/share/applications" installPath="/opt/myapp" linkPath="/usr/bin/myapp" echo "myapp uninstall" #Check user if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" exit 1 fi rm -v $iconsPath'/32x32/apps/myapp.png' rm -v $iconsPath'/48x48/apps/myapp.png' rm -v $iconsPath'/64x64/apps/myapp.png' rm -v $iconsPath'/128x128/apps/myapp.png' rm -v $iconsPath'/256x256/apps/myapp.png' rm -v $desktopPath'/myapp.desktop' #Remove app folder echo "---" rm -rfv $installPath rm -v $linkPath echo "Uninstall finished!"
      
      





.deb


恐ろしく巨大なフォーマット仕様にもかかわらず、単純なパッケージを作成するために必要な設定ファイルは1つだけです-コントロール。 しかし、最初に、いくつかの準備をする必要があります。

a)プログラムとパッケージのバージョンを示すプロジェクトフォルダーを作成します(例:myapp-1.1-1)

b) DEBIANフォルダーを追加します(登録が重要です!)。これには、すべてのサービスファイル、特にコントロールが含まれます。

制御の例
 Package: istodo Version: 1.2-1 Section: misc Architecture: amd64 Installed-Size: 16500 Maintainer: Yakov Eremin <support@istodo.ru> Description: Organizer for students iStodo is an organizer for students with scheduling and planning features.
      
      



ここではすべてが明らかです。完全な説明はスペースで始まることに注意する必要があります

c)ファイルシステム内のインストールされたプログラムのファイルの位置を繰り返すディレクトリ構造を作成します。



 myapp-1.1-1 ├── DEBIAN │  └── control └── usr ├── bin │  └── myapp └── share ├── applications │  └── myapp.desktop └── icons └── hicolor ├── 128x128 │  └── apps │  └── myapp.png ├── 256x256 │  └── apps │  └── myapp.png ├── 32x32 │  └── apps │  └── myapp.png ├── 48x48 │  └── apps │  └── myapp.png └── 64x64 └── apps └── myapp.png
      
      





スーパーユーザーに特権を上げずにパッケージを作成するには、対応する環境をエミュレートするfakerootユーティリティを使用する価値があります。



さて、次のコマンドでパッケージを収集します。

 fakeroot dpkg-deb --build myapp-1.1-1/
      
      





追加機能が必要な場合は、こちらで詳細なレビューを読むことができます。



.rpm


彼らが言うように、2つの方法があります-シンプルで正しい。

シンプル :.debパッケージに依存関係とスクリプトが含まれていない場合は、単純に変換することができます。その結果、おそらく.rpm形式の正しく機能するパッケージが得られます。 エイリアンユーティリティはこのために設計されており、リポジトリからインストールできます。

 fakeroot alien -kr myapp-1.0-1.deb
      
      





このアプローチの欠点は、Fedora 18以降でのパッケージの失敗です。 私の知る限り、この問題はシステムディレクトリへのアクセス権の違いが原因で発生します。これが競合の原因です。 2つのオプションがあります。パッケージをこの方法で修正する(Fedoraがインストールされている必要があります)か、期待どおりに.rpmパッケージを収集します。

正解 :残念ながら、3行半の構成を取得する方法はないため、「ダミー用のrpmの組み立て」は別の記事のトピックです。 この場合、完全なガイドがロシア語利用可能です。



パッケージの構築について詳しくはこちらをご覧ください



OS X



上記のように、2つの主な配布方法があります-プログラムを使用したディスクイメージ、またはディレクトリからのダウンロード。 どちらの方法もすでに十分に分解されているため、いくつかの基本的な点に注目する価値があります。





Qt SDKがインストールされているシステムだけでなくプログラムを実行するには、特別なユーティリティmacdeployqtを使用する必要があります。これは、必要なすべてのプラグインとフレームワークをアプリケーションバンドルにコピーします。 -dスイッチを追加すると、.dmgイメージが生成され、カスタマイズのベースとして使用できます。





目次



All Articles