2012-11-25 8 views
7

Mac Appstore用にサンドボックス化されたFiremonkeyアプリケーションのTOpenDialogに問題があるようです。私はXE3を使用しますが、XE2にも存在します。 は、私は実際にここにQCレポートを見つけましたが、それはまだ未解決です:TOpenDialog/NSOpenPanelがサンドボックス化されたDelphiアプリケーションで動作しない

http://qc.embarcadero.com/wc/qcmain.aspx?d=105344

は、誰もがそれを回避する方法を同じ問題、または任意のアイデアがありましたか?

非常に簡単に確認できます。単にTOpenDialogをフォームに配置し、Executeメソッドを呼び出します。エンバカデロの指示に従って、アプリケーションに署名し、サンドボックス:

http://docwiki.embarcadero.com/RADStudio/en/Mac_OS_X_Application_Development実行が遅延があると呼ばれる

、アプリが一瞬フリーズしますが、何も表示されません。例外やエラーメッセージはありません。 アプリがサンドボックス化されていない場合、ダイアログは正しく機能します。

このコードも機能しないため、問題はおそらくTOpenDialogによって呼び出されたTNSOpenPanelのどこかにありますが、残念ながら見つけられませんでした。

var 
    LOpenDir: NSOpenPanel; 
begin 
    LOpenDir := TNSOpenPanel.Wrap(TNSOpenPanel.OCClass.openPanel); 
    LOpenDir.runModal; 
    LOpenDir.release; 

Iは、サンドボックスとNSOpenPanelは、サンドボックスのないものと比較して、異なるクラスに由来することApple docsに読み取ります。 これは問題の原因だと思います。

アイデアをいただければ幸いです。

Btw、私はプロジェクトオプションでエンタイトルメントのいくつかの組み合わせを試しましたが、効果がありませんでした。

+0

私は同じ問題、任意の回避策を得ましたか?ありがとう。 – RRN

+0

残念ながら、これまでの回避策は見つかりませんでした。唯一の肯定的な点は、OSX 10.7ではこの問題が発生しますが、10.8では発生しないことです。これまでのところ、私のアプリケーションの唯一の解決策は、10.7で実行されたときに 'ブラウズ'機能を無効にしてドラッグドロップオプションのみを使用することでした。 – VGeorgiev

答えて

0

アプリケーションがサンドボックスにある場合、NSOpenPanel/NSSavePanelは、Powerboxという透過モジュールで管理する必要があります。 AppKitフレームワークの通常のパネルは効果がありません。しかし、Powerboxがファイルシステムにアクセスできるようにするには、資格リストに

com.apple.security.files.user-selected.read-write YES 

の設定を含める必要があります。

+0

ええ、すでにエンタイトルメントにこれを追加しようとしましたが、動作を変更しません。 PowerPanelモジュールでOpenPanelと呼ぶべきことは何ですか?私は思っていませんが、まだ... – VGeorgiev

+0

Hello Georgiev、私は回避策が見つかるとすぐに答えを書いてみましょう。 –

+0

こんにちは、私はあなたのエラーを再生成しようとしていますが、私はアプリケーションのコードを管理できませんでした。エラーが発生しました:オブジェクトファイル形式が認識できない、無効な、または不適切です。あなたはこのような状況に直面したことがあり、どのようにあなたのアプリをコーディネートできますか? –

関連する問題