Mac OS ในไดเรกทอรีการให้สิทธิ์ Sandbox ของแอปอ่านฉบับ

ฉันประสบปัญหาเกี่ยวกับการให้สิทธิ์ App Sandbox ของฉัน

แอพ My Mac OS อนุญาตให้ผู้ใช้เปิดไฟล์ XML เมื่อแยกวิเคราะห์ไฟล์นั้น ไฟล์จะอ่านไฟล์รูปภาพในไดเร็กทอรีเดียวกันกับไฟล์ XML

หาก App Sandbox เป็นเท็จ รูปภาพก็จะโหลดได้ดี หาก App Sandbox เป็น True รูปภาพจะไม่สามารถโหลดได้ (ไฟล์ XML ยังคงอ่านอยู่)

App Sandbox ต้องเป็น True จึงจะพุชไปยัง App Store ได้

ฉันเหนื่อย

com.apple.security.files.user-selected.read-write = TRUE
com.apple.security.temporary-exception.files.home-relative-path.read-only = TRUE
com.apple.security.temporary-exception.files.absolute-path.read-only = TRUE

ฉันดึงข้อมูลนี้จากเอกสารของ Apple: เอกสารการให้สิทธิ์ของ Apple

มีวิธีที่ฉันสามารถอ่านทั้งสองไฟล์ได้หรือไม่? มีใครเจอเรื่องแบบนี้อีกมั้ย?

นอกจากนี้ ไฟล์ทั้งสองสามารถอยู่ที่ใดก็ได้ที่ผู้ใช้จะบันทึกไฟล์ตามปกติ รวมถึงไดรฟ์เครือข่าย


person user-44651    schedule 21.02.2014    source แหล่งที่มา
comment
ฉันไม่เข้าใจคำถามของคุณเลย หรือเป็นแค่ฉันที่เป็นคนโง่? ไฟล์ XML ที่ผู้ใช้เลือกเกี่ยวข้องกับไฟล์รูปภาพอย่างไร การอ่านไฟล์รูปภาพหมายความว่าอย่างไร เข้าถึงไฟล์รูปภาพแล้วได้อะไร? คุณกำลังเล่นกับสิทธิ์ข้อยกเว้นชั่วคราวเหล่านั้นเพื่อจุดประสงค์ใด   -  person El Tomato    schedule 21.02.2014
comment
ผู้ใช้จะเปิดไฟล์ XML ไฟล์ XML มีรูปภาพที่เกี่ยวข้อง มันเป็นภาพต่อเรียงและไฟล์ Atlas ฉันสามารถอ่านไฟล์ XML และรูปภาพได้ดีโดยไม่ต้องใช้ App Sandbox หากเปิดอยู่ ฉันจะอ่านได้เฉพาะไฟล์ XML เท่านั้น   -  person user-44651    schedule 21.02.2014


คำตอบ (2)


com.apple.security.files.user-selected.read-write = TRUE

นี่คือค่าบูลีนและไม่เป็นไร การแสดง XML ในไฟล์การให้สิทธิ์คือ:

<key>com.apple.security.files.user-selected.read-write</key>
<true/>

การให้สิทธิ์อีก 2 รายการไม่ใช่บูลีน แต่เป็นอาร์เรย์ของสตริง ดังนั้นวิธีที่ถูกต้องในการนำเสนอในไฟล์การให้สิทธิ์คือ:

<key>com.apple.security.temporary-exception.files.home-relative-path.read-only</key>
<array>
    <string>example/local/path1/</string>
    <string>example/local/path2/</string>
</array>
<key>com.apple.security.temporary-exception.files.absolute-path.read-only</key>
<array>
    <string>/usr/local/bin/</string>
    <string>/usr/local/lib/</string>
</array>
person Giuseppe Amato    schedule 15.10.2019

ไม่ ไฟล์จึงจะอ่านได้ จะต้องเป็น:

  • ในตำแหน่งที่โลกสามารถอ่านได้หรือ
  • ในโฟลเดอร์ที่สามารถเปิดใช้งานได้ในการตั้งค่าการให้สิทธิ์ เช่น โฟลเดอร์ดาวน์โหลด หรือ
  • ผู้ใช้เปิดหรือบันทึกด้วยตนเองโดยใช้ NSOpenPanel หลังจากนั้นสามารถเลือกระบุได้
  • จัดเก็บเป็นบุ๊กมาร์กที่มีขอบเขตความปลอดภัย หลังจากนั้นจึงสามารถเข้าถึงได้อย่างอิสระ ดูที่นี่
person SevenBits    schedule 21.02.2014
comment
ฮึ. ดังนั้นตัวเลือกที่ดีที่สุดของฉันคือการข้าม Mac App Store ไปด้วยกันไหม? ผู้ใช้ของฉันอาจบันทึกไปยังตำแหน่งที่ไม่อยู่ในโฟลเดอร์มาตรฐานโดยตรง - person user-44651; 21.02.2014
comment
ไม่จำเป็น. คุณสามารถแก้ไขโค้ดของคุณเพื่อใช้บุ๊กมาร์กที่มีขอบเขตความปลอดภัยได้ โดยใช้บางอย่างเช่น NSDictionary หรือข้อมูลหลักเพื่อเชื่อมโยงเส้นทางของไฟล์กับบุ๊กมาร์กที่มีขอบเขตความปลอดภัย จากนั้นบันทึกข้อมูลนั้นลงในไฟล์ในคอนเทนเนอร์ของแอปของคุณ หรือ NSUserDefaults เพื่อทำให้กลับมามีชีวิตชีวาอีกครั้งที่ วิ่งครั้งต่อไป - person SevenBits; 21.02.2014
comment
เย้. ดูเหมือนว่าจะเกี่ยวข้องเล็กน้อย รู้บทเรียนใด ๆ บ้างไหม? - person user-44651; 21.02.2014
comment
โปรดจำไว้ว่าบุ๊กมาร์กที่มีขอบเขตความปลอดภัยยังคงใช้งานได้หลังจากที่ไฟล์ถูกย้ายอย่างน้อย ซึ่งจะช่วยประหยัดงานบางส่วนได้ สำหรับบทช่วยสอน มีที่นี่ และ ที่นี่ และฉันได้เขียน โอเพ่นซอร์สโค้ดที่ใช้งาน - person SevenBits; 21.02.2014
comment
ดี! ฉันขอขอบคุณความช่วยเหลือ ฉันจะตรวจสอบพวกเขาทั้งหมด - person user-44651; 21.02.2014