Mac용 새 프로그램을 다운로드하면 종종 ".dmg" 파일 형태로 제공됩니다. 디스크 아이콘으로 쉽게 식별할 수 있는 "dmg" 확장자는 '디스크 이미지(disk image)'를 의미합니다. dmg 파일을 더블클릭하면 마운트(정확히는 '어태치(attach)')되어 Finder에 내용물이 표시됩니다. 사용자는 여기서 이미지의 내용물을 응용 프로그램 폴더로 드래그 앤 드롭하여 Mac에 새 앱을 설치하게 됩니다.
이 과정은 Windows의 인스톨러 중심 방식과 매우 달라, macOS 초보 사용자에게 시행착오를 안겨주곤 합니다. Windows에서 넘어올 당시 저는 마지막 단계가 필요하다는 사실조차 몰랐습니다. 많은 프로그램이 디스크 이미지에서 바로 실행되기도 하고, 디스크 이미지가 항상 "응용 프로그램으로 드래그" 단계를 안내하지 않기 때문입니다. 결국 저는 한 달 가까이 디스크 이미지에서 직접 Firefox를 실행하면서도 북마크가 저장되지 않는 이유를 알지 못한 채 고생했습니다.
그렇다면 왜 새 애플리케이션에 DMG 파일이 필요할까요? 파일 하나를 옮기기 위해 굳이 무언가를 "마운트"해야 하는 이유는 무엇일까요?
이유 1: Mac 애플리케이션의 구조

Mac 애플리케이션은 더블클릭하면 실행되는 멋진 아이콘으로 표현되지만, 그 아이콘에는 비밀이 숨겨져 있습니다. .app 파일은 실제로 '패키지(package)'를 나타내며, 본질적으로 애플리케이션의 모든 파일을 담고 있는 하나의 폴더입니다.
직접 확인해 보세요. Finder에서 아무 애플리케이션이나 우클릭한 뒤 "패키지 내용 보기"를 선택하면 내부 구조를 탐색할 수 있습니다. macOS 애플리케이션은 본질적으로 폴더이기 때문에, 파일 하나도 빠짐없이 새 컴퓨터로 전송하려면 일종의 컨테이너가 필요합니다. 맨 폴더를 그대로 전송하면 특히 네트워크를 통해 이동할 때 파일이 누락되거나 어수선해질 수 있습니다.
마치 계란판 없이 계란 한 판을 운반하는 것과 같습니다. 그리고 DMG는 꽤 훌륭한 계란판 역할을 해냅니다. 물론 다른 포맷도 폴더를 담을 수 있습니다. 그렇다면 무엇 때문에 DMG가 오랫동안 사랑받고 있는 걸까요?
이유 2: 설치 화면의 자유로운 커스터마이징

디스크 이미지는 또 하나의 독특한 장점을 제공합니다. 바로 외관과 사용자의 설치 경험을 자유롭게 꾸밀 수 있다는 점입니다. 여기에는 사용자 지정 아이콘, 아이콘 위치 설정, 배경 이미지 등이 포함됩니다.
디스크 이미지를 열었을 때 앱을 응용 프로그램 폴더로 끌어다 놓으라는 화살표가 보인다면, 실제로는 DMG의 배경 이미지를 보고 있는 것입니다. 이는 다른 컨테이너 포맷으로는 불가능한 일이며, 시각적 디자인에 민감한 macOS 개발자들에게 큰 매력으로 다가옵니다. ZIP 아카이브는 압축 기능을 제공할 수 있지만, 실제 인스톨러를 실행하지 않고는 이 정도의 "설치 경험"을 연출할 수 없습니다. 압축 해제 프로그램은 그저 파일을 폴더에 풀어놓을 뿐이라, 개발자에게 미적 제어권이 거의 주어지지 않습니다.
이유 3: 디스크 이미지는 CD와 닮았습니다
디스크 이미지가 대중화되고 Apple이 이를 채택했던 시기는 물리적 매체의 시대였다는 점을 기억할 필요가 있습니다. 그 먼 옛날 사용자들은 매장에 직접 가서 애플리케이션 설치 CD가 담긴 상자를 구매해 소프트웨어를 샀습니다. 그런 다음 CD를 드라이브에 삽입하고, "마운트된" CD에서 응용 프로그램 폴더로 앱을 드래그했습니다. 설치가 끝나면 CD를 꺼내 향후 재설치를 위해 케이스에 보관하곤 했습니다.
디스크 이미지는 바로 이 과정을 그대로 재현하며, 익숙한 사용자 습관에 자연스럽게 편승합니다. 또한 이미지는 CD처럼 읽기 전용으로 만들 수 있어, 사용자가 검증된 정상 복사본을 실수로 손상하거나 변경하는 일을 막아줍니다. 덕분에 사용자는 디스크 이미지를 안전하게 보관할 수 있고, 비상시에 언제든 정상 작동하는 앱 복사본을 꺼내 쓸 수 있습니다.
결론: 현대적인 대안과 패키지 인스톨러

디스크 이미지는 오늘날에도 널리 사용되고 있습니다. 여러 장점에 더해 DMG는 전통과 기대라는 겉껍질까지 두르게 되었습니다. 사용자들은 새 소프트웨어가 DMG 형식으로 제공되기를 기대하기 때문에, 개발자들도 그에 맞춰 배포하는 것이죠. 하지만 인터넷 곳곳에는 ZIP 아카이브 안에 맨 .app 파일만 담겨 있는 경우도 적지 않게 찾아볼 수 있습니다. GitHub나 소규모 개발자가 배포하는 애플리케이션에서 특히 그렇습니다.
또한 .pkg 확장자를 가진 패키지 형태로 인스톨러와 함께 제공되는 애플리케이션도 있습니다. 개발자는 앱이 처음 열릴 때 특정 명령을 실행해야 하는 경우 패키지 포맷을 사용합니다. 프로그램이 "/Applications" 폴더 외부의 디렉토리에 파일을 복사해야 할 때 특히 유용합니다. 예를 들어 인스톨러가 사용자 지정 글꼴을 설치하거나 라이브러리(Library) 디렉토리에 파일을 복사해야 한다면, 패키지 포맷과 인스톨러 조합으로 이를 손쉽게 처리할 수 있습니다.
이 주제에 더 깊은 관심이 있다면, 디스크 이미지의 역사에 대해 한번 살펴보는 것도 좋겠습니다.