JPackage — 자체 포함 Java 애플리케이션 패키징
JPackage — 자체 포함 Java 애플리케이션 패키징
Java 애플리케이션을 만들고 나면, 이제 그걸 사용자에게 어떻게 전달할지 고민하게 돼요. 그때 필요한 게 jpackage예요. jpackage는 Java 애플리케이션과 Java 런타임 이미지를 입력으로 받아, 필요한 모든 의존성을 담은 Java 애플리케이션 이미지를 만들고, 나아가 플랫폼 고유 형식의 네이티브 패키지까지 만들어 주는 도구예요. Windows의 exe, macOS의 dmg처럼 각 플랫폼에서 바로 설치하고 실행할 수 있는 형태로 말이죠. 이 문서에서는 jpackage의 문법과 옵션, 그리고 실제 예시를 함께 살펴볼게요.
출처: JPackage
본문
소개 (Introducing Jpackage)
jpackage — 자체 포함(self-contained) Java 애플리케이션을 패키징해요.
문법 (Synopsis)
jpackage [options]
options — 공백으로 구분된 명령줄 옵션이에요. jpackage Options를 참고해요.
설명 (Description)
jpackage 도구는 Java 애플리케이션과 Java 런타임 이미지를 입력으로 받아, 필요한 모든 의존성을 포함한 Java 애플리케이션 이미지를 만들어요. 그리고 Windows의 exe나 macOS의 dmg처럼 플랫폼 고유 형식의 네이티브 패키지도 만들 수 있어요. 각 형식은 반드시 그것이 실행될 플랫폼에서 만들어야 해요 — 크로스 플랫폼 지원은 없어요. 이 도구에는 패키징된 애플리케이션을 여러 방식으로 커스터마이즈할 수 있는 옵션들이 있어요.
옵션 (Options)
일반 옵션 (Generic Options)
@filename— 파일에서 옵션을 읽어요. 이 옵션은 여러 번 사용할 수 있어요.--type또는-ttype — 만들 패키지의 타입이에요. 유효한 값은{"app-image", "exe", "msi", "rpm", "deb", "pkg", "dmg"}예요. 이 옵션을 지정하지 않으면 플랫폼에 따라 정해지는 기본 타입이 만들어져요.--app-versionversion — 애플리케이션 및/또는 패키지의 버전이에요.--copyrightcopyright — 애플리케이션의 저작권 표시(copyright)예요.--descriptiondescription — 애플리케이션에 대한 설명이에요.--help또는-h— 현재 플랫폼에서 유효한 각 옵션의 목록과 설명이 담긴 사용법 텍스트를 출력 스트림에 출력하고 종료해요.--iconpath — 애플리케이션 패키지의 아이콘 경로예요 (절대 경로 또는 현재 디렉터리 기준 상대 경로).--name또는-nname — 애플리케이션 및/또는 패키지의 이름이에요.--dest또는-ddestination — 생성된 출력 파일이 놓일 경로예요 (절대 경로 또는 현재 디렉터리 기준 상대 경로). 기본값은 현재 작업 디렉터리예요.--resource-dirpath — jpackage 리소스를 대체(override)할 경로예요 (절대 경로 또는 현재 디렉터리 기준 상대 경로). 이 디렉터리에 대체 리소스를 추가하면 아이콘, 템플릿 파일 등 jpackage의 리소스를 덮어쓸 수 있어요.--tempdirectory — 임시 파일을 만드는 데 쓰는, 새롭거나 빈 디렉터리의 경로예요 (절대 경로 또는 현재 디렉터리 기준 상대 경로). 지정하면 작업 완료 후에도 임시 디렉터리가 삭제되지 않으니 직접 지워야 해요. 지정하지 않으면 임시 디렉터리가 생성됐다가 작업 완료 시 삭제돼요.--vendorvendor — 애플리케이션의 공급자(vendor)예요.--verbose— 상세(verbose) 출력을 활성화해요.--version— 제품 버전을 출력 스트림에 출력하고 종료해요.
런타임 이미지 생성 옵션 (Options for creating the runtime image)
--add-modulesmodule-name [, module-name...] — 추가할 모듈의 쉼표(",")로 구분된 목록이에요. 지정하면 이 모듈 목록이 메인 모듈과 함께jlink에--add-module인자로 전달돼요. 지정하지 않으면 메인 모듈만(--module을 지정한 경우), 또는 기본 모듈 세트(--main-jar를 지정한 경우)가 사용돼요. 이 옵션은 여러 번 사용할 수 있어요.--module-path또는-pmodule-path [, module-path...] — File.pathSeparator로 구분된 경로 목록이에요. 각 경로는 모듈 디렉터리 또는 모듈형(modular) jar의 경로이며, 절대 경로 또는 현재 디렉터리 기준 상대 경로예요. 이 옵션은 여러 번 사용할 수 있어요.--jlink-optionsoptions —jlink에 전달할 옵션들의 공백으로 구분된 목록이에요. 지정하지 않으면 기본값은"--strip-native-commands --strip-debug --no-man-pages --no-header-files"이에요. 이 옵션은 여러 번 사용할 수 있어요.--runtime-imagedirectory — 애플리케이션 이미지로 복사될, 미리 정의된 런타임 이미지의 경로예요 (절대 경로 또는 현재 디렉터리 기준 상대 경로).--runtime-image를 지정하지 않으면jpackage가jlink를 실행해--jlink-options로 지정한 옵션을 사용해 런타임 이미지를 만들어요.
애플리케이션 이미지 생성 옵션 (Options for creating the application image)
--input또는-idirectory — 패키징할 파일이 담긴 입력 디렉터리의 경로예요 (절대 경로 또는 현재 디렉터리 기준 상대 경로). 입력 디렉터리의 모든 파일이 애플리케이션 이미지로 패키징돼요.--app-contentadditional-content [, additional-content...] — 애플리케이션 페이로드(payload)에 추가할 파일 및/또는 디렉터리 경로들의 쉼표로 구분된 목록이에요. 이 옵션은 두 번 이상 사용할 수 있어요. macOS 참고: 값은 "Resources" 하위 디렉터리(또는 애플리케이션 번들의 "Contents" 디렉터리에서 유효한 다른 디렉터리)를 포함한 디렉터리여야 해요. 그렇지 않으면jpackage가 유효하지 않은 애플리케이션 번들을 만들어 코드 서명 및/또는 notarization에 실패할 수 있어요.
애플리케이션 런처 생성 옵션 (Options for creating the application launcher(s))
--add-launchername=``*path* — 런처의 이름과, key, value 쌍 목록이 담긴 [Properties](https://docs.oracle.com/en/java/javase/26/docs/api/java.base/java/util/Properties.html) 파일의 경로예요 (절대 경로 또는 현재 디렉터리 기준 상대 경로)."module","main-jar","main-class","description","arguments","java-options","icon","launcher-as-service","win-console","win-shortcut","win-menu","linux-shortcut"` 키를 사용할 수 있어요. 이 옵션들은 추가 대체(alternative) 런처를 만들기 위해 원래의 명령줄 옵션에 더해지거나, 그것을 덮어쓰는 데 사용돼요. 메인 애플리케이션 런처는 명령줄 옵션으로 만들어져요. 추가 대체 런처는 이 옵션으로 만들 수 있고, 이 옵션을 여러 번 사용해 여러 개의 추가 런처를 만들 수 있어요.--argumentsarguments — 런처에 명령줄 인자가 주어지지 않을 때 메인 클래스에 전달할 명령줄 인자예요. 값에는 런타임에 확장되는 부분 문자열이 들어갈 수 있어요. 지원되는 부분 문자열은 환경 변수와"APPDIR","BINDIR","ROOTDIR"토큰 두 종류예요. 확장 가능한 부분 문자열은 달러 기호 문자($)와 그 뒤에 오는 첫 번째 비알파벳 문자 사이에 넣어야 해요. 또는"${"와"}"사이에 넣어도 돼요. 확장 가능한 부분 문자열은 Unix에서 대소문자를 구분하고, Windows에서는 대소문자를 구분하지 않아요. 참조한 환경 변수가 정의되어 있지 않으면 문자열 확장이 일어나지 않아요."APPDIR","BINDIR","ROOTDIR"이름의 환경 변수는 무시되고, 이 확장 가능한 부분 문자열은 애플리케이션 런처가 계산한 값으로 대체돼요. 부분 문자열 확장을 막으려면 달러 기호 문자 앞에 백슬래시 문자(\)를 붙여요. 이 옵션은 여러 번 사용할 수 있어요.--java-optionsoptions — Java 런타임에 전달할 옵션이에요.--arguments옵션에서처럼 값에 런타임에 치환되는 부분 문자열이 들어갈 수 있어요. 이 옵션은 여러 번 사용할 수 있어요.--main-classclass-name — 실행할 애플리케이션 메인 클래스의 정규화된(qualified) 이름이에요. 이 옵션은--main-jar가 지정된 경우에만 사용할 수 있어요.--main-jarmain-jar — 메인 클래스를 담고 있는 애플리케이션의 메인 JAR이에요 (입력 경로 기준 상대 경로).--module또는--main-jar중 하나만 지정할 수 있어요. 둘 다 지정할 수는 없어요.--module또는-mmodule-name[/*main-class*]— 애플리케이션의 메인 모듈(그리고 선택적으로 메인 클래스)이에요. 이 모듈은 모듈 경로(module path)에 있어야 해요. 이 옵션을 지정하면 메인 모듈이 Java 런타임 이미지에 링크돼요.--module또는--main-jar중 하나만 지정할 수 있어요. 둘 다 지정할 수는 없어요.
애플리케이션 런처 생성을 위한 플랫폼 의존 옵션 (Platform dependent option for creating the application launcher)
Windows 플랫폼 옵션 (Windows platform options) — Windows에서 실행할 때만 사용 가능
--win-console— 애플리케이션용 콘솔 런처를 만들어요. 콘솔 상호작용이 필요한 애플리케이션이라면 지정해야 해요.
macOS 플랫폼 옵션 (macOS platform options) — macOS에서 실행할 때만 사용 가능
--mac-package-identifieridentifier — macOS에서 애플리케이션을 고유하게 식별하는 식별자예요. 기본값은 메인 클래스 이름이에요. 알파벳(A-Z, a-z, 0-9), 하이픈(-), 마침표(.) 문자만 사용할 수 있어요.--mac-package-namename — 메뉴 바(Menu Bar)에 표시되는 애플리케이션의 이름이에요. 애플리케이션 이름과 달라도 돼요. 이 이름은 16자보다 짧아야 하고, 메뉴 바와 애플리케이션 Info 창에 표시하기에 적합해야 해요. 기본값은 애플리케이션 이름이에요.--mac-package-signing-prefixprefix — 애플리케이션 패키지를 서명할 때, 기존 패키지 식별자가 없는 서명이 필요한 모든 컴포넌트에 이 값을 접두사로 붙여요.--mac-sign— 패키지 또는 미리 정의된 애플리케이션 이미지의 서명을 요청해요.--mac-signing-keychainkeychain-name — 서명 아이덴티티(signing identity)를 찾을 키체인(keychain)의 이름이에요. 지정하지 않으면 표준 키체인이 사용돼요.--mac-signing-key-user-namename — Apple 서명 아이덴티티에서 팀 또는 사용자 이름 부분이에요.--mac-app-store—jpackage출력물이 Mac App Store용임을 나타내요.--mac-entitlementspath — 번들에서 실행 파일과 라이브러리를 서명할 때 사용할 entitlements를 담고 있는 파일의 경로예요.--mac-app-categorycategory — 애플리케이션 plist에서LSApplicationCategoryType을 만드는 데 사용하는 문자열이에요. 기본값은"utilities"예요.
애플리케이션 패키지 생성 옵션 (Options for creating the application package)
--about-urlurl — 애플리케이션 홈페이지의 URL이에요.--app-imagedirectory — 설치 가능한 패키지를 만드는 데(모든 플랫폼) 또는 서명하는 데(macOS) 사용할, 미리 정의된 애플리케이션 이미지의 위치예요 (절대 경로 또는 현재 디렉터리 기준 상대 경로).--file-associationspath — key, value 쌍 목록이 담긴 Properties 파일의 경로예요 (절대 경로 또는 현재 디렉터리 기준 상대 경로)."extension","mime-type","icon","description"키로 연결(association)을 설명할 수 있어요. 이 옵션은 여러 번 사용할 수 있어요.--install-dirpath — 애플리케이션 설치 디렉터리의 절대 경로(macOS 또는 linux) 또는 설치 디렉터리의 상대 하위 경로, 예를 들어"Program Files"나"AppData"(Windows)예요.--license-filepath — 라이선스 파일의 경로예요 (절대 경로 또는 현재 디렉터리 기준 상대 경로).--runtime-imagepath — 설치할 미리 정의된 런타임 이미지의 경로예요 (절대 경로 또는 현재 디렉터리 기준 상대 경로). 런타임 인스톨러(runtime installer)를 만들 때는 이 옵션이 필수예요.--launcher-as-service— 메인 애플리케이션 런처를 백그라운드 서비스형(background service-type) 애플리케이션으로 등록하는 인스톨러를 만들도록 요청해요.
애플리케이션 패키지 생성을 위한 플랫폼 의존 옵션 (Platform dependent options for creating the application package)
Windows 플랫폼 옵션 (Windows platform options) — Windows에서 실행할 때만 사용 가능
--win-dir-chooser— 사용자가 제품이 설치될 디렉터리를 고를 수 있는 대화상자를 추가해요.--win-help-urlurl — 사용자가 추가 정보나 기술 지원을 받을 수 있는 URL이에요.--win-menu— 이 애플리케이션용 시작 메뉴(Start Menu) 바로 가기를 추가하도록 요청해요.--win-menu-groupmenu-group-name — 이 애플리케이션이 놓일 시작 메뉴 그룹이에요.--win-per-user-install— 사용자별(per-user) 설치를 요청해요.--win-shortcut— 이 애플리케이션용 데스크톱 바로 가기를 만들도록 요청해요.--win-shortcut-prompt— 인스톨러가 바로 가기를 만들지 사용자가 고를 수 있는 대화상자를 추가해요.--win-update-urlurl — 사용 가능한 애플리케이션 업데이트 정보의 URL이에요.--win-upgrade-uuidid — 이 패키지의 업그레이드와 연결된 UUID예요.
Linux 플랫폼 옵션 (Linux platform options) — Linux에서 실행할 때만 사용 가능
--linux-package-namename — Linux 패키지 이름이에요. 기본값은 애플리케이션 이름이에요.--linux-deb-maintaineremail-address —.deb번들의 유지 보수자(maintainer)예요.--linux-menu-groupmenu-group-name — 이 애플리케이션이 놓일 메뉴 그룹이에요.--linux-package-depspackage-dep-string — 애플리케이션에 필요한 패키지 또는 기능(capabilities)이에요.--linux-rpm-license-typetype — 라이선스 타입이에요 (RPM.spec의"License: value").--linux-app-releaserelease — RPM<name>.spec 파일의 release 값 또는 DEB control 파일의 Debian revision 값이에요.--linux-app-categorycategory-value — RPM<name>.spec 파일의 Group 값 또는 DEB control 파일의 Section 값이에요.--linux-shortcut— 애플리케이션용 바로 가기를 만들어요.
macOS 플랫폼 옵션 (macOS platform options) — macOS에서 실행할 때만 사용 가능
--mac-dmg-contentadditional-content [, additional-content...] — 참조된 모든 콘텐츠를 dmg에 포함해요. 이 옵션은 두 번 이상 사용할 수 있어요.
예시 (Examples)
호스트 시스템에 적합한 애플리케이션 패키지를 생성해요.
모듈형(modular) 애플리케이션의 경우:
jpackage -n name -p modulePath -m moduleName/className
비모듈형(non-modular) 애플리케이션의 경우:
jpackage -i inputDir -n name --main-class className --main-jar myJar.jar
미리 빌드된 애플리케이션 이미지에서:
jpackage -n name --app-image appImageDir
애플리케이션 이미지를 생성해요.
모듈형 애플리케이션의 경우:
jpackage --type app-image -n name -p modulePath -m moduleName/className
비모듈형 애플리케이션의 경우:
jpackage --type app-image -i inputDir -n name --main-class className --main-jar myJar.jar
jlink에 직접 옵션을 주고 싶다면 jlink를 따로 실행해요:
jlink --output appRuntimeImage -p modulePath
--add-modules moduleName \
--no-header-files [<additional jlink options>...]
jpackage --type app-image -n name \
-m moduleName/className --runtime-image appRuntimeImage
Java 런타임 패키지를 생성해요:
jpackage -n name --runtime-image <runtime-image>
미리 정의된 애플리케이션 이미지에 서명해요 (macOS):
jpackage --type app-image --app-image <app-image> \
--mac-sign [<additional signing options>...]
참고: 이 모드에서 허용되는 추가 옵션은 macOS 서명 추가 옵션 세트와 --verbose뿐이에요.
jpackage와 jlink (jpackage and jlink)
jpackage는 --runtime-image 옵션을 쓰지 않는 한 jlink를 사용해 Java Runtime을 만들어요. Windows에서 생성된 Java Runtime 이미지에는 JDK에 번들되어 있는 MS 런타임 라이브러리가 포함돼요. 애플리케이션에 다른 버전의 MS 런타임 라이브러리가 필요하다면, 사용자가 직접 추가하거나 교체해야 해요.
jpackage 리소스 디렉터리 (jpackage resource directory)
이 디렉터리에 대체 리소스를 추가하면 아이콘, 템플릿 파일 등 jpackage의 리소스를 덮어쓸 수 있어요. jpackage는 리소스 디렉터리에서 파일을 특정 이름으로 찾아요.
Linux에서 실행할 때만 고려되는 리소스 디렉터리 파일
<launcher-name>.png— 애플리케이션 런처 아이콘이에요. 기본 리소스는JavaApp.png예요.<launcher-name>.desktop—xdg-desktop-menu명령과 함께 사용할 데스크톱 파일이에요. 파일 연결(file associations)로 등록된 애플리케이션 런처 및/또는 아이콘이 있는 런처에 대해 고려돼요. 기본 리소스는template.desktop이에요.
Linux DEB/RPM 인스톨러를 만들 때만 고려되는 리소스 디렉터리 파일
<package-name>-<launcher-name>.service— 백그라운드 서비스형 애플리케이션으로 등록된 애플리케이션 런처용systemd유닛 파일이에요. 기본 리소스는unit-template.service예요.
Linux RPM 인스톨러를 만들 때만 고려되는 리소스 디렉터리 파일
<package-name>.spec— RPM spec 파일이에요. 기본 리소스는template.spec이에요.
Linux DEB 인스톨러를 만들 때만 고려되는 리소스 디렉터리 파일
control— Control 파일이에요. 기본 리소스는template.control이에요.copyright— 저작권 파일이에요. 기본 리소스는template.copyright이에요.preinstall— 설치 전(pre-install) 셸 스크립트예요. 기본 리소스는template.preinstall이에요.prerm— 제거 전(pre-remove) 셸 스크립트예요. 기본 리소스는template.prerm이에요.postinstall— 설치 후(post-install) 셸 스크립트예요. 기본 리소스는template.postinstall이에요.postrm— 제거 후(post-remove) 셸 스크립트예요. 기본 리소스는template.postrm이에요.
Windows에서 실행할 때만 고려되는 리소스 디렉터리 파일
<launcher-name>.ico— 애플리케이션 런처 아이콘이에요. 기본 리소스는JavaApp.ico예요.<launcher-name>.properties— 애플리케이션 런처 실행 파일용 Properties 파일이에요. 기본 리소스는WinLauncher.template이에요.
Windows MSI/EXE 인스톨러를 만들 때만 고려되는 리소스 디렉터리 파일
<application-name>-post-image.wsf— 애플리케이션 이미지를 만든 뒤 실행할 Windows Script File(WSF)이에요.main.wxs— 메인 WiX 프로젝트 파일이에요. 기본 리소스는main.wxs예요.overrides.wxi— 오버라이드(overrides) WiX 프로젝트 파일이에요. 기본 리소스는overrides.wxi예요.service-installer.exe— 서비스 인스톨러 실행 파일이에요. 일부 애플리케이션 런처가 백그라운드 서비스형 애플리케이션으로 등록된 경우 고려돼요.<launcher-name>-service-install.wxi— 서비스 인스톨러 WiX 프로젝트 파일이에요. 일부 애플리케이션 런처가 백그라운드 서비스형 애플리케이션으로 등록된 경우 고려돼요. 기본 리소스는service-install.wxi예요.<launcher-name>-service-config.wxi— 서비스 인스톨러 WiX 프로젝트 파일이에요. 일부 애플리케이션 런처가 백그라운드 서비스형 애플리케이션으로 등록된 경우 고려돼요. 기본 리소스는service-config.wxi예요.InstallDirNotEmptyDlg.wxs— 설치 디렉터리가 존재하지 않거나 비어 있는지 검사하는 인스톨러 UI 대화상자용 WiX 프로젝트 파일이에요. 기본 리소스는InstallDirNotEmptyDlg.wxs예요.ShortcutPromptDlg.wxs— 바로 가기를 구성하는 인스톨러 UI 대화상자용 WiX 프로젝트 파일이에요. 기본 리소스는ShortcutPromptDlg.wxs예요.bundle.wxf— 애플리케이션 이미지의 컴포넌트 계층 구조가 담긴 WiX 프로젝트 파일이에요. 기본 리소스는bundle.wxf예요.ui.wxf— 인스톨러 UI용 WiX 프로젝트 파일이에요. 기본 리소스는ui.wxf예요.os-condition.wxf— 이전 버전의 Windows에서 설치를 차단하는 조건이 담긴 WiX 프로젝트 파일이에요. 기본 리소스는os-condition.wxf예요.wix-conv.xsl— WiX 소스 변환기예요. WiX v4 이상을 사용할 때 WiX 소스를 WiX v3에서 v4 스키마로 변환하는 데 쓰여요. 기본 리소스는wix3-to-wix4-conv.xsl이에요.
Windows EXE 인스톨러를 만들 때만 고려되는 리소스 디렉터리 파일
WinInstaller.properties— 인스톨러 실행 파일용 Properties 파일이에요. 기본 리소스는WinInstaller.template이에요.<package-name>-post-msi.wsf— EXE 인스톨러용 임베디드 MSI 인스톨러를 만든 뒤 실행할 Windows Script File(WSF)이에요.installer.exe— MSI 인스톨러용 실행 파일 래퍼예요. 기본 리소스는msiwrapper.exe예요.
macOS에서 실행할 때만 고려되는 리소스 디렉터리 파일
<launcher-name>.icns— 애플리케이션 런처 아이콘이에요. 기본 리소스는JavaApp.icns예요.Info.plist— 애플리케이션 property list 파일이에요. 기본 리소스는Info-lite.plist.template이에요.Runtime-Info.plist— Java Runtime property list 파일이에요. 기본 리소스는Runtime-Info.plist.template이에요.<application-name>.entitlements— 서명 entitlements property list 파일이에요. 기본 리소스는sandbox.plist예요.
macOS PKG/DMG 인스톨러를 만들 때만 고려되는 리소스 디렉터리 파일
<package-name>-post-image.sh— 애플리케이션 이미지를 만든 뒤 실행할 셸 스크립트예요.
macOS PKG 인스톨러를 만들 때만 고려되는 리소스 디렉터리 파일
uninstaller— 제거 프로그램 셸 스크립트예요. 일부 애플리케이션 런처가 백그라운드 서비스형 애플리케이션으로 등록된 경우 고려돼요. 기본 리소스는uninstall.command.template이에요.preinstall— 설치 전(pre-install) 셸 스크립트예요. 기본 리소스는preinstall.template이에요.postinstall— 설치 후(post-install) 셸 스크립트예요. 기본 리소스는postinstall.template이에요.services-preinstall— 서비스 패키지용 설치 전 셸 스크립트예요. 일부 애플리케이션 런처가 백그라운드 서비스형 애플리케이션으로 등록된 경우 고려돼요. 기본 리소스는services-preinstall.template이에요.services-postinstall— 서비스 패키지용 설치 후 셸 스크립트예요. 일부 애플리케이션 런처가 백그라운드 서비스형 애플리케이션으로 등록된 경우 고려돼요. 기본 리소스는services-postinstall.template이에요.<package-name>-background.png— 배경 이미지예요. 기본 리소스는background_pkg.png예요.<package-name>-background-darkAqua.png— 다크(dark) 배경 이미지예요. 기본 리소스는background_pkg.png예요.product-def.plist— 패키지 property list 파일이에요. 기본 리소스는product-def.plist예요.<package-name>-<launcher-name>.plist— 백그라운드 서비스형 애플리케이션으로 등록된 애플리케이션 런처용launchdproperty list 파일이에요. 기본 리소스는launchd.plist.template이에요.
macOS DMG 인스톨러를 만들 때만 고려되는 리소스 디렉터리 파일
<package-name>-dmg-setup.scpt— 설정용 AppleScript 스크립트예요. 기본 리소스는DMGsetup.scpt예요.<package-name>-license.plist— 라이선스 property list 파일이에요. 기본 리소스는lic_template.plist예요.<package-name>-background.tiff— 배경 이미지예요. 기본 리소스는background_dmg.tiff예요.<package-name>-volume.icns— 볼륨 아이콘이에요. 기본 리소스는JavaApp.icns예요.