web-dev-qa-db-ja.com

WindowsでGTK +アプリケーションを配布する方法は?

WindowsにMSYSとMinGWを介してGTK +(具体的にはGTK3)をインストールしました。 GTK + dllをアプリケーションディレクトリにコピーして、グローバルGTK +をインストールせずにコンピューターで実行できるようにします。 GTK +が動作するために必要なdllはどれですか?

6
bradrn

_ldd mygtkapp.exe_(MinGWで提供されるlddを使用)を実行すると、実行に必要なすべてのdllのリストが表示されたことがわかりました。 gtkの依存関係であるdllのみを取得するには(Win32 dllなどではありません)、次のコマンドを使用しました:ldd mygtkapp.exe | sed -n 's/\([^ ]*\) => \/mingw.*/\1/p' | sort。私のプログラムはHaskellバインディングを使用していたので、依存関係は少し異なるかもしれませんが、これは私が得たものです:

_libatk-1.0-0.dll
libbz2-1.dll
libcairo-2.dll
libcairo-gobject-2.dll
libepoxy-0.dll
libexpat-1.dll
libffi-6.dll
libfontconfig-1.dll
libfreetype-6.dll
libgcc_s_seh-1.dll
libgdk_pixbuf-2.0-0.dll
libgdk-3-0.dll
libgio-2.0-0.dll
libglib-2.0-0.dll
libgmodule-2.0-0.dll
libgobject-2.0-0.dll
libgraphite2.dll
libgthread-2.0-0.dll
libgtk-3-0.dll
libharfbuzz-0.dll
libiconv-2.dll
libintl-8.dll
libpango-1.0-0.dll
libpangocairo-1.0-0.dll
libpangoft2-1.0-0.dll
libpangowin32-1.0-0.dll
libpcre-1.dll
libpixman-1-0.dll
libpixman-1-0.dll
libpng16-16.dll
libstdc++-6.dll
libwinpthread-1.dll
zlib1.dll
_

特にストックアイコンを使用している場合は、完全にスタンドアロンのアプリケーションを作成するために必要なことが他にもいくつかあることにも注意してください。詳細については、 https://stackoverflow.com/a/34673860/7345298 を参照してください。ただし、スケーラブルディレクトリではなく16x16ディレクトリをコピーする必要があることに注意してください。

EDIT:実際には、次のコマンドも非常に便利であることがわかりました:_ldd mygtkapp.exe | grep '\/mingw.*\.dll' -o | xargs -I{} cp "{}" ._。このコマンドは、実際にはdllを現在のディレクトリにコピーするため、手間をかけて自分で行う必要はありません。

5
bradrn

GTK + WebサイトのWindowsページ にいくつかのヒントがあります。これは、アプリケーションの構築と配布という名前のセクションです。 WindowsでのGTK +アプリケーションの配布 に関するブログ投稿を特集しています。

そこで提案された解決策は、アプリケーション用のMSYS2パッケージを作成し、それとそのすべての依存関係(GTK +)を特定のディレクトリにインストールして、パッケージ全体を再配布できるようにすることです。

6
liberforce

次の手順を使用して、必要なDLLを取得できます。

  1. ダウンロード Listdlls
  2. アプリケーションを実行したままにします
  3. Listdlls.exeが配置されているPowerShellウィンドウを開きます
  4. コマンド./Listdlls.exeapplication_name.exeを使用します
  5. リストされているすべてのパスをテキストファイルにコピーします
  6. テキストファイルに「C:\ WINDOWS *」を含むすべての行を削除します
  7. テキストファイルに「C:\ msys64 * ... *。dll」を含む行のみを残します
  8. Msys2シェルを開く
  9. $ cp "paste_all_paths_from_dlls" "destination_path"を使用します

$ cpコマンドを使用する前の注意。テキストファイルで、パスの「\」を「/」に変更し、改行を削除します。

0
Edson Pacholok