1

Mac OS X に Cocoa アプリ「PDFHistory」があり、NSDocument アーキテクチャを使用して、アプリ用に特別に内部的にフォーマットされた PDF ファイルを保存およびロードします。PDFHistory からファイル (「mydoc.pdf」など) を保存した後、mydoc.pdf をダブルクリックすると、PDFHistory.app で自動的に開くようにしたいと考えています。ただし、すべての .pdf ファイルが PDFHistory で自動的に開かれるようにしたくはありませんが、システムのデフォルト (おそらく Preview.app) を使用します。ただし、デフォルトの PDF ビューアーでファイルを表示できる他のユーザーにファイルを電子メールで送信できるようにする必要があるため、.pdf サフィックスは必須です。

問題は、LSHandlerRank を「所有者」に設定すると、すべての.pdf ファイルが PDFHistory で開かれることです。これは悪いことです (PDFHistory が書き出した .pdf ファイルの内部しか理解していないため)。しかし、LSHandlerRank を "Alternate" に設定すると、すべての .pdf ファイルがシステムの既定のアプリ (Preview.app) に対して開かれます。これは、アプリを使用してファイルを作成したばかりのユーザーを混乱させます。

むかしむかし、「作成者コード」を使用してこの種の機能を実装することができましたが、起動サービスは Snow Leopard でそれらを無視し始めました ( http://tidbits.com/article/10537を参照)。UTI は、この機能を提供する代わりのものではありません ( http://boredzo.org/blog/archives/2009-09-22/how-not-to-use-utisを参照)。

Finder を使用してファイルに関する情報を取得すると、ユーザーは特定のファイルを開くために使用する特定のアプリを指定できます。これは、ファイルのリソースに「usro」プロパティを設定することで機能すると思われます。この動作を模倣するオープンソース コードがいくつかありますが ( https://github.com/AlanQuatermain/SetAppAffinity )、非推奨の関数を使用しているため、Apple が App Store からアプリを拒否する原因となります。同様に、人々はこのプロパティを設定するために AppleScript を投稿しました ( https://discussions.apple.com/thread/2597365 ) が、サンドボックス化によって呼び出すことができなくなります。

.pdf サフィックスは、他のシステム/プラットフォームのユーザーにファイルを送信できるようにするための要件ですが、「.phistory.pdf」として 2 つの拡張子を付けてサフィックスを登録しようと考えました。 phistory.pdf" は PDFHistory で開かれますが、"file.pdf" はデフォルトの PDF ビューアで開かれます。ただし、これは単に機能しませんでした。起動サービスで使用されるのは最後のサフィックスだけであり、それより前のサフィックスはすべて無視されるようです。

私のアプリを、自分で作成したファイルを開くためのデフォルトのアプリにする方法はありますか?

4

0 に答える 0