必要に応じて、システムによってポータブルアプリがどのように呼び出されますか(例:ファイルアソシエーション)?
-
09-10-2019 - |
質問
Linuxにはポータブルアプリのいくつかの実装がありますが、 すべて Mac OS Xアプリはポータブルです。 Mac OS Xはこのモデルを完全に採用しているため、この問題の解決策がすでにあると思います。
Windowsは、あちこちにファイルを配置し、レジストリで物事を変更してアプリを「インストール」するため、ファイル関連を簡単に作成できます。しかし、Mac OS X(または何でも)のMplayerをダウンロードしたばかりだとしましょう。私はすべての映画をmplayerで開くことを望んでいます。次に、mplayerのアプリバンドルを移動することにしました(ねえ、ポータブルですよね?)。協会は壊れますか?それとも、OS Xでそれがどのように行われるかではありませんか?
Linuxでポータブルアプリをどのように実装しますか? OS Xのモデルに似ている必要がありますか?これは非常にオープンエンドの質問であることは知っていますが、どんな提案も感謝しています。
解決
OS XのLaunch Servicesデータベースは、いくつかの方法でドキュメントバインディングを追跡します。これは、一般に、アプリケーションを移動しても、アプリケーションを一致させるのが最善です。
実行できます lsregister -dump
(lsregister
は /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
)Launch Servicesデータベースがバインディングについて言っていることを確認する。たとえば、テキストファイルをバインドしてTextWranglerで開くと、次のように表示されます。
handler id: 3124
content type: public.plain-text
options:
all roles: com.barebones.textwrangler (0x3ea30180)
public.plain-text
aです 均一なタイプ識別子 (これは1つ以上のファイル拡張子、MIMEタイプなどにマップし、サブタイプがある場合があります)プレーンテキストを表します。 com.barebones.textwrangler
TextWranglerのバンドルIDです。
ドキュメントバインディングのためにこれほど堅牢なLinux標準を知っていません。Macのようなことを行うには、まずその場所や名前に関係なくアプリケーションを識別する標準的な方法が必要です(Java Package-likeなど/MACの逆dnsメソッド)、その後、タイプマッピングとバインディングのレジストリで、十分なデスクトップ環境が役立つのに続いて、アプリケーションがインストールされているように登録する方法を登録します。
必ずしも別のファイルが必要ではありません Info.plist
Macアプリケーションバンドルでは、この情報を保存します。 Mac OS Xでも、情報を正常に起動するバイナリセクションに情報を埋め込むことができます(これは別の「フォーク」または拡張属性ではないことに注意してください。これは、デバッグ情報を実行可能ファイルに埋め込むようなものです)。したがって、おそらくの派生物です .desktop
ファイルを埋め込むことができます。一方、コンテンツを認識する方法が必要です。理想的には、あなたは file(1)
ドキュメントタイプを識別するコマンド。クラシックマックOSはこれを行いました 翻訳マネージャー (ある形式から別の形式へのコンバーターの登録、およびスニファーを許可しました)。
utisと翻訳マネージャーは、クリップボードとドラッグアンドドロップのコンテンツ、およびディスク上のファイルを処理します。これらのフォーマット表現を統合することは、あなたがそれにいる間はかなり便利です。
他のヒント
各ファイルブラウザ(Nautilus、Konquerorなど)は、独自のファイル関連を使用するように構成する必要があります。幸いなことに、無料のデスクトッププロジェクトは、ファイルアソシエーションの標準化に取り組んでいます(他の多くのものの中でも)。による 共有MIMEデータベース 説明、正式な仕様はまだ書かれていませんが、形式はほとんど標準化されています。
無料のデスクトッププロジェクトも使用します .desktop
「移植性」を提供するファイル(おそらくこれには別の単語を使用する必要があります...おそらく「移動可能」?)。実行可能ファイルを外に移動した場合 PATH
, 、更新できます .desktop
正しい場所を指す。
基本的に、Linuxコミュニティでは、これらの目標を達成するためのよりユーザーフレンドリーで開発者に優しい(つまり標準化された)方法に向かって移動する多くの継続的な作業があります。しかし、物事はまだ行われていません。