บ่อยครั้งเรารันแอปพลิเคชันบนระบบที่ไม่ได้ลงนามอย่างถูกต้อง หรือในบางกรณี แค่เก่าเกินไป สำหรับผู้ใช้ Windows พวกเขามักได้รับคำเตือนพร้อมตัวเลือกให้รันแอปพลิเคชันต่อไป อย่างไรก็ตาม นั่นไม่ใช่กรณีของระบบ Mac เมื่อคุณพยายามรันแอปพลิเคชันที่ไม่ได้ลงนามดิจิทัลอย่างถูกต้อง หรือซอฟต์แวร์อื่นที่พัฒนาโดยชุมชนเพื่อวัตถุประสงค์ต่างๆ คุณอาจได้รับข้อความข้อผิดพลาด "Application.app is damaged and can't be opened"

เหตุผลที่ข้อความข้อผิดพลาดนี้เกิดขึ้นชัดเจนมาก macOS มีฟีเจอร์ความปลอดภัยเฉพาะที่ตรวจสอบแอปพลิเคชันที่คุณต้องการรัน และจากนั้นขึ้นอยู่กับการลงนามโค้ด อนุญาตให้แอปพลิเคชันทำงาน อย่างไรก็ตาม ในบางสถานการณ์ เมื่อแอปที่คุณต้องการรันเป็นเวอร์ชันเก่าและไม่ได้ลงนาม คุณจะถูกโยนข้อความข้อผิดพลาดดังกล่าว เนื่องจาก Gatekeeper ไม่อนุญาตให้รัน แอปถูกจัดว่าไม่ปลอดภัย และแนะนำให้ลบ
ตอนนี้ นี่อาจช่วยได้ในกรณีส่วนใหญ่ แต่มีแอปที่เชื่อถือได้ และถูกตรวจจับว่าไม่ปลอดภัยโดยฟีเจอร์ความปลอดภัย Gatekeeper ในกรณีนี้ เพื่อเอาชนะปัญหา สิ่งที่คุณต้องทำคือเปลี่ยน System Preferences, รันแอปพลิเคชันด้วยคำสั่ง xattr, หรือปิด Gatekeeper ชั่วคราวทั้งหมด ด้วยที่กล่าวมา เรามาเข้าสู่วิธีต่างๆ ที่จะช่วยแก้ปัญหา
วิธีที่ 1: รันแอปจากหน้าต่าง Terminal
ตามที่พบ หากคุณรันแอปพลิเคชันเดียวกันจากหน้าต่าง terminal โดยใช้สิทธิ์ superuser มันจะรันโดยไม่มีปัญหา พื้นฐานแล้วสิทธิ์ superuser จะ override ฟีเจอร์ Gatekeeper และดังนั้นแอปพลิเคชันจะได้รับอนุญาตให้ทำงาน คุณควรทำเช่นนี้ก็ต่อเมื่อคุณเชื่อถือแอปพลิเคชันที่ต้องการรันอย่างสมบูรณ์ การทำเช่นนี้สำหรับแอปสุ่มที่คุณได้จากอินเทอร์เน็ตไม่ใช่ความคิดที่ดี ด้วยที่กล่าวมา ทำตามคำแนะนำด้านล่างเพื่อรันแอป:
- ก่อนอื่น เปิดหน้าต่าง Terminal โดยไปที่ Finder > Go > Utilities

- จากนั้น ค้นหาและเปิด Terminal
- เมื่อหน้าต่าง terminal พร้อม ใช้คำสั่งต่อไปนี้เพื่อรันแอปพลิเคชัน:
sudo xattr -cr /path/to/application.app

- ทริกเล็กๆ นี่คือแค่ไปที่ไดเรกทอรีที่แอปอยู่ แล้วลากวางลง terminal นั้นจะวางพาธของแอปพลิเคชันอัตโนมัติ
- เมื่อทำแล้ว แค่พิมพ์ sudo xattr -cr หน้าพาธ แล้วกด Enter
- คุณจะถูกขอรหัสผ่านแอดมิน ใส่แล้วกด Enter อีกครั้ง
- แอปควรจะรันได้ตอนนี้
วิธีที่ 2: ปิดการตรวจสอบชั่วคราว
อีกวิธีหนึ่งที่คุณสามารถกำจัดข้อความข้อผิดพลาดคือปิดการตรวจสอบทั่วไปชั่วคราว ตามที่กล่าวไว้ข้างต้น Gatekeeper เป็นฟีเจอร์ความปลอดภัยใน macOS ที่ตรวจสอบแอปที่คุณต้องการรัน และปกป้องระบบจากมัลแวร์ ตามที่พบ ในบางกรณี มันจัดการกับแอปที่ไม่ได้ลงนามที่คุณดาวน์โหลดว่าไม่ปลอดภัย นั่นคือเหตุผลที่คุณได้รับข้อความข้อผิดพลาดดังกล่าว ดังนั้น วิธีแก้ง่ายคือแค่ปิดฟีเจอร์ชั่วคราวแล้วเปิดใหม่ นี่คือวิธีทำ:
- เพื่อปิด Gatekeeper คุณต้องเปิดหน้าต่าง Terminal บน Mac ก่อน
- คุณสามารถทำได้ผ่าน Finder > Go > Utilities หรือแค่ค้นหาใน Spotlight

- เมื่อ Terminal เปิดแล้ว ให้รันคำสั่งต่อไปนี้เพื่อปิดการตรวจสอบ:
sudo spctl --master-disable

- ใส่รหัสผ่านแอดมินเพื่อดำเนินการให้เสร็จ
- เมื่อทำแล้ว ไปรันแอปพลิเคชัน
- สำคัญที่คุณต้องเปิดการตรวจสอบอีกครั้งหลังจากใช้แอปพลิเคชัน
- เพื่อทำเช่นนี้ ให้รันคำสั่งต่อไปนี้:
sudo spctl --master-enable
วิธีที่ 3: อนุญาตแอปจากที่ใดก็ได้
คุณยังสามารถอนุญาตแอปจากที่ใดก็ได้ให้รันโดยไม่มีปัญหาจาก macOS System Preferences นี่คือที่ตั้งค่า Gatekeeper และคุณแค่ต้องแก้ไขเพื่ออนุญาตให้แอปทั้งหมดทำงาน ทำตามขั้นตอนด้านล่าง:
- ก่อนอื่น เปิดหน้าต่าง System Preferences บน Mac
- จากนั้น บนหน้าจอ System Preferences ไปที่ Security & Privacy
- บนแท็บ General ของ Security & Privacy คลิกไอคอนล็อกเพื่อปลดล็อกตัวเลือกบางส่วน

- คุณจะถูกขอรหัสผ่านแอดมิน ใส่แล้วกด Enter
- จากนั้น ภายใต้ "Allow applications downloaded from" เลือกตัวเลือก Anywhere

- สุดท้าย คลิกไอคอนล็อกอีกครั้งเพื่อบันทึกการเปลี่ยนแปลง
- เมื่อทำแล้ว รันแอปพลิเคชัน
- ตรวจสอบให้แน่ใจว่าเปลี่ยนการตั้งค่ากลับเป็นค่าเริ่มต้นเมื่อเปิดแอปพลิเคชันแล้ว คุณจะไม่ต้องการในอนาคตสำหรับแอปเดียวกัน
วิธีที่ 4: ให้สิทธิ์
ในบางสถานการณ์ ปัญหาอาจปรากฏเนื่องจากข้อจำกัดสิทธิ์ หากคุณพยายามรันไฟล์ที่ไม่มีสิทธิ์ execute คุณน่าจะได้รับข้อความข้อผิดพลาดดังกล่าว ในกรณีนี้ สิ่งที่คุณต้องทำคือให้สิทธิ์ที่จำเป็น และลองรันอีกครั้ง ทำตามขั้นตอนด้านล่าง:
- ก่อนอื่น เปิดหน้าต่าง Terminal บน Mac พิมพ์ sudo chmod +x ในหน้าต่าง Terminal แต่อย่ากด Enter
- จากนั้น ไปที่แอปพลิเคชัน คลิกขวาแล้วเลือก Show Package Contents

- ที่นี่ ไปที่ Contents > MacOS
- จากนั้น หาไฟล์ที่มีชื่อแอปพลิเคชันและไม่มีส่วนขยาย หากมีไฟล์เดียว แค่ลากวางลง terminal

- ตอนนี้ คำสั่งควรจะเป็นแบบนี้:
sudo chmod +x /path/to/application
- สุดท้าย กด Enter เพื่อรันคำสั่ง ใส่รหัสผ่านแอดมิน
- จากนั้น รันแอปพลิเคชัน และดูว่านั้นแก้ปัญหาหรือไม่