Application ส่วนใหญ่ของ Mac ก่อนติดตั้ง จะถูกเก็บเป็นก้อน Disk image (.dmg) เพื่อง่ายสำหรับการ Download และแจกจ่าย ส่วนประกอบหลักๆ ของ .app จะประกอบด้วย Unix Execute File (รากฐานของ Mac เป็น Unix) และส่วนที่เรียกกว่า Resource หรือ ส่วนประกอบเสริม เช่น Interface,Image,String,Audio จะถูกเก็บรวมกันเป็นก้อนใน Folder หนึ่ง แต่ User จะเห็นมันเป็นแค่ File นานสกุล .app นั้นเอง
การติดตั้งมี 2 แบบคือ การ install มาจาก package และแบบลากลง หลังจาก mount .dmg แล้ว ก็พร้อมสำหรับการลากลง Folder Application เป็นการติดตั้งโปรแกรมที่ง่ายแสนง่ายจริง แค่ ลากมันไป ที่ Application Folder แล้วมันจะกระโดดลงไปทันที และเมื่อต้องการลบ ก็แค่ลากลง Trash (Drag and drop ง่ายนิดเดียว) แต่ถ้าติดตั้งแบบ package ก็ Next next ... กันไป แต่ถ้าติดตั้งแบบ package ก็เหนื่อยหน่อยเวลาตามลบให้หมด หรืออาจจะใช้ Utility อย่าง Appzapper (ต้องเสียตังนะ) หรือจะแบบ Manual โดย เปิด package นั้น ด้วย Installer.app แล้วไปที่ เมนู File->Show File (command + i) ก็จะเห็น List File ทั้งหมดที่จะติดตั้งลงไป
ส่วนประกอบของ .app มี file ทั้งเป็น Unix Execute File และ Resource ของ Application สามารถดู content ได้โดย ctrl+click แล้ว show package content มีส่วนประกอบดังนี้
• Frameworks เป็น Library ของโปรแกรมส่วนใหญ่จะใช้ Cocoa , Carbon
• MacOS เป็น Execute File
• Resources สำหรับเก็บพวก รูปภาพ เสียง และ String ต่างๆ
• English.lproj เป็น String ภาษาอังกฤษ ซึ่งสามารถแปลเป็นภาษาต่างๆได้ อย่างเช่น VLC (มีเมนูภาษาไทยด้วย)
• File.nib เป็น File interface ซึ่งสามารถแก้ได้ ด้วย interface builder
เสริม
จริงๆ แล้ว .app เป็น folder ธรรมดาๆ นี่แหละครับ แต่ว่ามีโครงสร้างที่จำเพาะเจาะจง เป็นลักษณะ framework (กรอบงาน) คือมีการระบุว่าจะประกอบด้วยอะไรบ้าง และระบบจะรู้อยู่แล้วว่าไอ้ที่อยู่ข้างในตำแหน่งต่างๆ เนี่ยจะทำงานร่วมกันได้ยังไง นี่เรียกว่า "application bundle" ครับ
โดยพื้นฐานคือ การเอา executable กับ resource ที่เกี่ยวข้อง ยัดใส่ folder ที่มีโครงสร้างแบบ framework เฉพาะตัว เมื่อทำการรัน ระบบจะรู้ว่าจะต้องไปเอาอะไรที่ตรงไหน เนื่องจากโครงสร้างมันเหมือนกัน
นั่นคือ เมื่อเรามี folder และมีโครงสร้างแบบเดียวกับ application bundle แล้ว ระบบจะมองมันเป็น application ได้ครับ คือ รู้ว่าถ้าเรา double click มัน มันจะไปเอา executable จากไหน และมันจะเอา icon จากไหนมาเป็นหน้าตา
ในส่วนการพัฒนาโปรแกรม Cocoa Framework ก็มีส่วนที่จัดการ bundle ได้โดยตรงเช่นกัน เรียกได้ว่าค่อนข้างจะครบวงจร
อย่างไรก็ดี ไม่ได้หมายความว่าทุกโปรแกรมบน OS X จะใช้ระบบ application bundle ครับ