2011-09-09 30 views
9

Tôi đã tạo một ứng dụng thử nghiệm đơn giản trong Delphi XE2 và biên dịch cả phiên bản Win32 và OSX của ứng dụng.
Tôi đã nén phiên bản OSX, cùng với bản sao của tệp thời gian chạy libcgunwind dylib và sao chép tệp này vào máy Mac mà tôi có quyền truy cập.
Khi tôi giải nén tệp, mac nhận ra ứng dụng OSX của tôi và tôi đã nhấp đúp vào nó.Tại sao ứng dụng Firemonkey của tôi mở cửa sổ đầu cuối trên OSX chứ không phải trên Win32?

Điều này, đến lượt nó, mở ra một cửa sổ đầu cuối cho một số lý do không rõ cùng với biểu mẫu ứng dụng đơn giản của tôi.
Ứng dụng tự chạy và hoạt động tốt, nhưng tôi tò mò tại sao cửa sổ đầu cuối sẽ mở trên máy Mac?

+0

Tôi đoán nó có liên quan đến tệp thời gian chạy «libcgunwind dylib' mà bạn đã triển khai với nó. – Johan

+0

Tôi dễ dàng thừa nhận tôi là một Mac OSX hoàn toàn mới, vì thiếu một từ tốt hơn. với dylib, ứng dụng sẽ không chạy. Các tệp dylib có cần phải đi trong một thư mục đặc biệt không? Tôi có phải 'cài đặt' ứng dụng ở đâu đó cụ thể trên máy mac để nó chạy đúng không? Đây là những điều tôi không biết. – Alan

+0

vợ tôi có một chiếc MacBook và đó là như xa như kiến ​​thức Mac của tôi đi, tôi nghĩ rằng bạn có thể cố gắng đặt vấn đề này trước khi các folks tại http://apple.stackexchange.com/ – Johan

Trả lời

2

IIRC này xảy ra nếu bạn thực hiện nhị phân trực tiếp thay vì thông qua một bundle

ứng dụng Lazarus/FPC có cùng một vấn đề. IIRC nhị phân thực hiện trực tiếp cũng không nhận được các sự kiện trong những trường hợp đó, nhưng các ứng dụng đó dựa trên Carbon. Vấn đề đó cũng biến mất khi chạy qua một thiết lập bó (đó là khá nhiều tệp kê khai, một vài thư mục và một liên kết tượng trưng)

3

Có một công cụ miễn phí có sẵn cho Delphi XE2 sẽ tạo gói ứng dụng triển khai OSX cho bạn, từ Windows, mà không cần PAServer.

http://enesce.com/delphiosx_bundler

Kiểm tra readme để được hướng dẫn.

0

Ứng dụng của bạn cần được chạy từ gói ứng dụng. Nếu bạn chạy nó trực tiếp, bạn sẽ nhận được hiệu ứng phụ khi nhìn thấy cửa sổ đầu cuối với dòng lệnh đang chạy ứng dụng.

Bạn sẽ muốn đọc thêm về Application Bundles.

Nếu bạn đang sử dụng PAServer, sau khi bạn chạy chương trình lần đầu tiên trên Mac, hãy tìm trong thư mục sau trên Mac cho gói ứng dụng:

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

Nếu dự án của bạn được đặt tên Project1 , bạn sẽ thấy một gói ứng dụng trong thư mục đó có tên là Project1.

Nếu bạn đọc bài viết trên wiki, bạn sẽ biết rằng Project1 có phần mở rộng "ẩn" .app và toàn bộ thư mục thực sự là một thư mục với tất cả các tệp cần thiết để chạy ứng dụng.

Đối với người dùng Mac OS, gói ứng dụng xuất hiện dưới dạng tệp chương trình duy nhất, hoàn chỉnh với biểu tượng. Người dùng có thể nhấp đúp vào gói ứng dụng để chạy ứng dụng, kéo nó vào thanh công cụ, v.v.

Gói ứng dụng sẽ có biểu tượng Delphi theo mặc định, nhưng bạn có thể thay thế bằng biểu tượng của riêng mình. Trên máy Mac, chỉ cần nhấp chuột phải vào gói ứng dụng trong Trình tìm kiếm và chọn Hiển thị nội dung gói. Trong đó, tìm trong thư mục Contents/Resources cho tệp .icns.

Sử dụng ứng dụng Trình soạn biểu tượng đã được cài đặt với XCode để tạo tệp biểu tượng .icns của bạn từ các tệp hình ảnh hiện có.

Nhìn xung quanh bên trong ở phần còn lại của nội dung. Bạn sẽ thấy dylib cần thiết, tệp chương trình của bạn và tệp Info.plist, là tệp văn bản có những thứ như ID ứng dụng, chữ ký và những thứ quan trọng khác.

Các vấn đề liên quan