Tôi có ứng dụng Cocoa thường chạy ở chế độ 64 bit đầy đủ trên bất kỳ máy Mac nào hỗ trợ kiến trúc này.Bắt buộc ứng dụng Cocoa bắt đầu ở chế độ 32 bit theo chương trình
Bây giờ tôi có API bên ngoài chỉ khả dụng dưới dạng trình cắm 32 bit để được tải vào chương trình chính. API này dành cho thiết bị đầu vào của bên thứ ba mà chỉ một phần nhỏ người dùng của tôi sẽ mua, nhưng điều đó quan trọng đối với tỷ lệ phần trăm nhỏ đó.
Vấn đề của tôi là chương trình chỉ có thể sử dụng API này nếu được thực hiện ở chế độ 32 bit. Điều đơn giản nhất là:
Trường hợp 1: yêu cầu người dùng khởi động chương trình ở chế độ 32 bit bằng cách thay đổi thông tin của chương trình qua hộp thoại Nhận thông tin của người tìm.
này được thực hiện một cách dễ dàng, nhưng hầu như không thanh lịch ..
Kịch bản 2: luôn luôn chạy ở chế độ 32-bit như vậy tránh được các vấn đề
Hầu như những gì tôi muốn làm một trong hai .. xử phạt 98 % người dùng vì lợi ích của một tính năng kỳ lạ.
Kịch bản 3: tự động thay đổi ra mắt của ứng dụng thuộc tính để nó bắt đầu ở chế độ 32-bit lần sau nó được đưa ra và mỗi lần sau đó
hoặc
Kịch bản 4: tại thời điểm ra mắt, thiết lập kiến trúc nào đang được sử dụng, sau đó khởi chạy lại ở chế độ 32 bit nếu cần
Kịch bản 3 & 4 có vấn đề rất ít tài liệu về cách thực hiện điều này và m làm tôi gặp rắc rối với hướng dẫn của Mac App Store.
Cho đến nay, tôi đã thành lập:
- rằng việc sử dụng công cụ "vòm" dòng lệnh sẽ cho phép tôi khởi động lại thực thi của tôi trong chế độ 32-bit
- Finder kịch bản sẽ không cho phép tôi thay đổi các "Launch trong 32-bit mode" cờ
- cờ được quản lý bởi Dịch vụ Launch API (http://blog.timac.org/?p=490)
- NHƯNG tôi đã không tìm thấy bất kỳ giao diện để lập trình thay đổi cờ trong Dịch vụ Launch API
Cho đến nay tôi chỉ có thể thấy các tùy chọn, không ai trong số đó dường như đặc biệt lớn:
- relaunch các ứng dụng sử dụng NSTask và "vòm" dòng lệnh công cụ
- ghi trực tiếp vào com.apple. LaunchServices.plist
- cô lập các plug-in 32-bit vào riêng 32-bit quá trình duy nhất của nó và sử dụng IPC
giải pháp 1 có thể làm cho tôi vào rắc rối với việc nộp MAS. Giải pháp 2 gần như chắc chắn sẽ làm như vậy ở một số giai đoạn ..giải pháp duy nhất 3 sẽ hoàn hảo từ góc nhìn của người dùng nhưng thêm một số lượng lớn sự phức tạp để trả tiền tối thiểu.
Bất kỳ lời khuyên nào về cách thực hiện điều này "rõ ràng" và với nỗ lực hợp lý sẽ được đánh giá cao!
Tại sao nó quan trọng nếu ứng dụng của bạn là 32-bit chỉ - nó cần một lượng lớn bộ nhớ (> 2 GB)? –
Bạn có đang chạy luôn ở chế độ 32 bit có nhiều hình phạt không? – hamstergene
Giải pháp 3 nghe hay nhất. – spudwaffle