9

Delphi XE2 で簡単なテストベッド アプリを作成し、アプリケーションの Win32 バージョンと OSX バージョンの両方をコンパイルしました。
OSX バージョンを libcgunwind dylib ランタイム ファイルのコピーと一緒に圧縮し、このファイルをアクセスできる Mac にコピーしました。
ファイルを解凍すると、Mac が OSX アプリケーションを認識し、それをダブルクリックしました。

これにより、単純なアプリのフォームとともに、なんらかの理由でターミナル ウィンドウが開かれました。
アプリケーション自体は問題なく動作しましたが、Mac でターミナル ウィンドウが開くのはなぜでしょうか?

4

3 に答える 3

3

Delphi XE2で利用できる無料のツールがあり、PAServerを必要とせずに、WindowsからOSXデプロイメントアプリバンドルを作成します。

http://enesce.com/delphiosx_bundler

手順については、Readmeを確認してください。

于 2011-09-19T06:14:44.287 に答える
2

IIRC これは、バンドルを介してではなくバイナリを直接実行した場合に発生します

Lazarus/FPC アプリにも同じ問題がありました。直接実行されるバイナリである IIRC もそのような状況ではイベントを取得しませんでしたが、これらのアプリは Carbon ベースでした。バンドルセットアップを介して実行すると、その問題も解消されました(これはほとんどマニフェスト、いくつかのディレクトリ、およびシンボリックリンクです)

于 2011-09-09T17:40:17.543 に答える
0

アプリケーションは、アプリケーション バンドルから実行する必要があります。直接実行すると、アプリケーションを実行しているコマンド ラインでターミナル ウィンドウが表示されるという副作用があります。

アプリケーション バンドルについて詳しくは、こちらをご覧ください。

PAServer を使用している場合は、Mac で初めてプログラムを実行した後、Mac の次のフォルダーでアプリケーション バンドルを探します。

/Users/[username]/Applications/Embarcadero/PAServer/scratch-dir/[profilename]

プロジェクトの名前が Project1 の場合、そのフォルダーに Project1 という名前のアプリケーション バンドルが表示されます。

上記の wiki 記事を読むと、Project1 には .app という「隠し」拡張子があり、全体が実際にはアプリケーションを実行するために必要なすべてのファイルを含むフォルダーであることがわかります。

Mac OS ユーザーには、アプリケーション バンドルはアイコン付きの単一のプログラム ファイルとして表示されます。ユーザーは、アプリケーション バンドルをダブルクリックしてアプリケーションを実行したり、ドックにドラッグしたりできます。

アプリケーション バンドルにはデフォルトで Delphi アイコンがありますが、独自のアイコンに置き換えることができます。Mac では、Finder でアプリケーション バンドルを右クリックし、[パッケージの内容を表示] を選択します。そこで、Contents/Resources フォルダーで .icns ファイルを探します。

XCode と共にインストールされた Icon Composer アプリケーションを使用して、既存の画像ファイルから .icns アイコン ファイルを作成します。

中身の残りの部分を中をのぞいてみましょう。必要な dylib、プログラム ファイル、Info.plist ファイルが表示されます。このファイルは、アプリケーション ID、署名、およびその他の重要な情報を含むテキスト ファイルです。

于 2011-11-09T22:07:02.863 に答える