2011-12-17 19 views
13

Bạn có thể tự động gán CFBundleDocumentTypes cho ứng dụng Cocoa của mình không? Có nghĩa là trong thời gian chạy, tôi có thể gán nhiều tiện ích hơn cho ứng dụng của mình để xử lý.Bạn có thể tự động gán CFBundleDocumentTypes cho ứng dụng Cocoa của mình không?

Hiện tại tôi đã đặt một số tiện ích mở rộng cho ứng dụng của mình xử lý bằng CFBundleDocumentTypes trong Info.plist, nhưng tôi muốn thực hiện điều này thông qua mã trong khi ứng dụng đang thực thi (trong thời gian chạy). Về cơ bản tôi có thể làm cho Launch Services nhận biết các phần mở rộng mới mà không sửa đổi tệp Info.plist.

Cảm ơn.

Trả lời

9

Hiện tại, không có API công khai cho ứng dụng tự động (un) đăng ký loại tài liệu với Dịch vụ khởi chạy trong thời gian chạy.

Open Emu đối mặt với vấn đề này. Người dùng có thể tải xuống/cài đặt có chọn lọc trình mô phỏng, là các gói có tệp Info.plist xác định loại tài liệu. Khi cài đặt trình mô phỏng, các loại được xác định trong nhóm cần phải là một phần của các loại như được xác định trong ứng dụng Info.plist. Mở Emu viết lại ứng dụng Info.plist để làm như vậy - xem -updateInfoPlist in OEGameDocumentController.

Lưu ý rằng ghi đè gói Info.plist là vi phạm chính sách của Mac App Store.

Chúng tôi có filed radars yêu cầu đăng ký thời gian chạy (un) các loại tài liệu. Tôi cũng đề nghị bạn gửi một tệp khác, mã này sẽ bị đóng dưới dạng bản sao của #2526726. Ngay cả khi đó là bản sao, điều quan trọng là phải nộp tệp sao cho Apple có ước tính số lượng người cần tính năng này.

Có thể thông qua SPI. Khi tôi đang xem xét điều này, tôi tình cờ gặp _LSRegisterItemFromItemInfo() trong Dịch vụ khởi chạy.

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