簡體   English   中英

OS X沙箱問題

[英]OS X sandboxing questions

我在App Store中有一個Mac應用程序,並希望在成為強制性要求之前采用沙盒。 我遇到了兩個問題,並希望在此處發布有關以下情況下最佳實踐的一些見解:

  • 在我的應用程序中,我使用NSOpenPanel提示用戶加載專有文件格式。 加載文件后,我的應用程序對其進行解析,並收集本地文件的NSURL列表。 然后將這些本地文件傳遞到NSImage的initWithContentsOfURL:方法。 不幸的是,加載圖像文件的操作導致沙箱取消該操作。 我知道發生這種情況是因為用戶已授予我的應用程序顯式權限來打開由NSOpenPanel選擇的文件,而不是我專有格式中引用的文件。 如何處理這種(據說相當普遍)的情況?
  • 我的應用程序捆綁包中包含一個unix可執行文件,我想使用NSTask執行該文件。 鑒於腳本包含在我的捆綁軟件中,在沙盒下合法嗎?

如果有人可以澄清以上幾點,將不勝感激。

1)據我了解,NSURL對象包含以后重新訪問文件所必需的權限,因此,如果您使用的是硬編碼路徑,則可以將它們替換為已歸檔的NSURL對象。 這也假設用戶在較早的時候在NSOpenPanel中選擇了那些文件。

2)您可以運行NSTask,但它會繼承主應用程序的權限。

希望其他人可以提供更多信息。 我發現Mac開發者委員會 ,特別是“應用程序沙箱”論壇是有幫助的,因為Apple員工經常加入。到目前為止,我發現沙箱是一個不可用的爛攤子。

第一步很簡單:您可以使用NSTask運行您的幫助程序,它將繼承您應用程序的沙箱。

那些網址:不容易/可靠/根本沒有。 有一種方法可以將NSURL保存到您可以訪問的文件中,這樣可以在以后運行應用程序並重新加載它們並重新獲得訪問權限, 但是這被認為是脆弱的,因此不建議這樣做。 閱讀Apple開發人員論壇,這是他們正在“解決”的Apple公認問題; 鑒於此,使用脆弱的解決方案可能不值得花大功夫-如果您真的想立即破解某些可行的方法,請在開發者論壇上搜索脆弱的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM