Mac 응용 프로그램을위한 멋진 설치 프로그램을 만들어야합니다. 미리 정의 된 크기, 레이아웃 및 배경 이미지가있는 디스크 이미지 (DMG)가되고 싶습니다.
기존 빌드 시스템에 통합하려면 스크립트에서 프로그래밍 방식 으로이 작업을 수행해야합니다 (설치 프로그램 만 생성하기 때문에 팩 시스템의 더 많은 부분이 있습니다. 빌드는 별도로 수행됩니다).
이미 “hdiutil”을 사용하여 DMG를 만들었습니다. 아직 알지 못한 것은 아이콘 레이아웃을 만들고 배경 비트 맵을 지정하는 방법입니다.
답변
많은 연구를 한 후에 나는이 대답을 생각해 냈고, 나는 그것을 여기에 내 자신의 질문에 대한 대답으로 여기에 넣었습니다.
-
시스템 환경 설정 >> 범용 액세스에서 “보조 장치에 대한 액세스 활성화”가 선택되어 있는지 확인하십시오. AppleScript가 작동해야합니다. 이 변경 후 재부팅해야 할 수도 있습니다 (Mac OS X Server 10.4에서는 작동하지 않습니다).
-
R / W DMG를 만듭니다. 결과보다 커야합니다. 이 예에서 bash 변수 “size”는 Kb의 크기를 포함하고 “source”bash 변수의 폴더 내용이 DMG에 복사됩니다.
hdiutil create -srcfolder "${source}" -volname "${title}" -fs HFS+ \ -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${size}k pack.temp.dmg
-
디스크 이미지를 마운트하고 장치 이름을 저장하십시오 (이 작업 후 몇 초 동안 휴면 상태를 원할 수 있음).
device=$(hdiutil attach -readwrite -noverify -noautoopen "pack.temp.dmg" | \ egrep '^/dev/' | sed 1q | awk '{print $1}')
-
배경 그림 (PNG 형식)을 DMG의 “.background”폴더에 저장하고 “backgroundPictureName”변수에 이름을 저장하십시오.
-
AppleScript를 사용하여 비주얼 스타일을 설정하십시오 (.app의 이름은 bash 변수 “applicationName”에 있어야하며 필요에 따라 다른 특성에 변수를 사용하십시오).
echo ' tell application "Finder" tell disk "'${title}'" open set current view of container window to icon view set toolbar visible of container window to false set statusbar visible of container window to false set the bounds of container window to {400, 100, 885, 430} set theViewOptions to the icon view options of container window set arrangement of theViewOptions to not arranged set icon size of theViewOptions to 72 set background picture of theViewOptions to file ".background:'${backgroundPictureName}'" make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"} set position of item "'${applicationName}'" of container window to {100, 100} set position of item "Applications" of container window to {375, 100} update without registering applications delay 5 close end tell end tell ' | osascript
-
권한을 올바르게 설정하고 압축 및 해제하여 DMG를 마무리하십시오.
chmod -Rf go-w /Volumes/"${title}" sync sync hdiutil detach ${device} hdiutil convert "/pack.temp.dmg" -format UDZO -imagekey zlib-level=9 -o "${finalDMGName}" rm -f /pack.temp.dmg
Snow Leopard에서 위의 Applescript는 아이콘 위치를 올바르게 설정하지 않습니다. Snow Leopard 버그 인 것 같습니다. 한 가지 해결 방법은 아이콘을 설정 한 후 간단히 닫기 / 열기를 호출하는 것입니다.
..
set position of item "'${applicationName}'" of container window to {100, 100}
set position of item "Applications" of container window to {375, 100}
close
open
답변
사용자 정의 배경, 사용자 정의 아이콘 위치 및 볼륨 이름으로 멋진 DMG 를 빌드하는 create-dmg 라는 작은 Bash 스크립트가 있습니다 .
나는 수년 전에 내가 운영했던 회사를 위해 그것을 구축했습니다. 그 이후로 다른 사람들의 공헌으로 살아남으며 잘 작동합니다.
Node.js에 기반한보다 현대적이고 적극적인 노력처럼 보이는 node-appdmg 도 있습니다 . 그것도 확인하십시오.
답변
거기 가지마 장기적인 Mac 개발자로서 확실한 해결책은 없습니다. 나는 많은 솔루션을 시도했지만 너무 좋지는 않습니다. 문제는 Apple이 실제로 필요한 데이터에 대한 메타 데이터 형식을 문서화하지 않는다는 것입니다.
다음은 오랫동안 성공적으로 수행하는 방법입니다.
-
readme와 같은 예상 바이너리 및 추가 파일을 저장할 수있을 정도로 큰 쓰기 가능한 (!) 새 DMG를 작성하십시오 (스파 스가 작동 할 수 있음).
-
DMG를 마운트하고 Finder에서 수동으로 또는 적절한 도구를 사용하여 레이아웃을 지정하십시오 (좋은 도구는 하단의 FileStorm 링크 참조). 배경 이미지는 일반적으로 DMG의 숨겨진 폴더 ( “.something”)에 넣은 이미지입니다. 거기에 앱의 사본을 넣으십시오 (구 버전, 심지어 구식 버전). 원하는 다른 파일 (별칭, readme 등)을 복사하십시오. 오래된 버전은 정상적으로 작동합니다. 아이콘의 크기와 위치가 올바른지 확인하십시오 (IOW, 원하는 방식으로 DMG 레이아웃).
-
DMG를 다시 마운트 해제하면 모든 설정이 저장됩니다.
-
다음과 같이 작동하는 create DMG 스크립트를 작성하십시오.
- DMG를 복사하므로 원본을 다시 만지지 않습니다.
- 사본을 마운트합니다.
- 모든 파일을 최신 파일로 바꿉니다 (예 : 빌드 후 최신 앱). mv 를 사용 하거나 ditto명령 행에서 를 . 그런 파일을 교체하면 아이콘은 그대로 유지되고 위치는 동일하게 유지되며 파일 (또는 디렉토리) 내용을 제외한 모든 내용은 동일하게 유지됩니다 (적어도 그 작업에는 일반적으로 사용되는 ditto) . 물론 배경 이미지를 다른 이미지로 바꿀 수도 있습니다 (크기가 같은지 확인하십시오).
- 파일을 교체 한 후 스크립트에서 DMG 사본을 다시 마운트 해제하십시오.
- 마지막으로 hdiutil을 호출하여 쓰기 가능 파일을 압축 된 (쓰기 불가능한) DMG로 변환하십시오.
이 방법은 최적으로 들리지 않을 수도 있지만 실제로는 실제로 잘 작동합니다. 버전 제어 (예 : SVN)에서도 원본 DMG (DMG 템플릿)를 넣을 수 있으므로 실수로 변경 / 파기 한 경우에도 여전히 수정본으로 돌아갈 수 있습니다. 버전 관리하에 DMG에 속한 다른 모든 파일 (readme, URL 파일, 배경 이미지)과 함께 DMG 템플릿을 Xcode 프로젝트에 추가 한 다음 대상 (예 : “Create DMG”라는 외부 대상)을 만들 수 있습니다. 위의 DMG 스크립트를 실행하고 이전 주 대상을 종속 대상으로 추가하십시오. 스크립트에서 $ {SRCROOT}를 사용하여 Xcode 트리의 파일에 액세스 할 수 있으며 (항상 제품의 소스 루트 임) $ {BUILT_PRODUCTS_DIR}을 사용하여 빌드 제품에 액세스 할 수 있습니다 (항상 Xcode가 빌드 결과를 작성하는 디렉토리 임) .
결과 : 실제로 Xcode는 빌드가 끝날 때 DMG를 생성 할 수 있습니다. 출시 준비가 된 DMG. 릴리스 DMG를 그렇게 쉽게 만들 수있을뿐만 아니라 명령 줄에서 xcodebuild (예 : 자동화 된 야간 빌드)를 사용하여 자동화 된 프로세스 (원하는 경우 헤드리스 서버)에서 실제로 만들 수 있습니다.
템플릿의 초기 레이아웃과 관련하여 FileStorm 은 템플릿을 만드는 데 유용한 도구입니다. 상업적이지만 매우 강력하고 사용하기 쉽습니다. 일반 버전은 20 달러 미만이므로 정말 저렴합니다. 어쩌면 FileStorm을 자동화하여 DMG (예 : AppleScript를 통해)를 만들 수는 있지만 절대 시도하지는 않았지만 완벽한 템플릿 DMG를 찾은 후에는 모든 릴리스에 대해 업데이트하기가 정말 쉽습니다.
답변
이 답변을 제공하여이 질문을 최신 상태로 유지하십시오.
appdmg
간단한 json 사양에서 dmg 파일을 만드는 간단하고 사용하기 쉬운 오픈 소스 명령 줄 프로그램입니다. 공식 웹 사이트에서 읽어보기를 살펴보십시오.
https://github.com/LinusU/node-appdmg
빠른 예 :
-
appdmg 설치
npm install -g appdmg
-
JSON 파일 작성 (
spec.json
){ "title": "Test Title", "background": "background.png", "icon-size": 80, "contents": [ { "x": 192, "y": 344, "type": "file", "path": "TestApp.app" }, { "x": 448, "y": 344, "type": "link", "path": "/Applications" } ] }
-
프로그램 실행
appdmg spec.json test.dmg
(면책 조항. 나는 appdmg의 제작자입니다)
답변
이 주제에 관심이있는 분들을 위해 DMG를 만드는 방법에 대해 언급해야합니다.
hdiutil create XXX.dmg -volname "YYY" -fs HFS+ -srcfolder "ZZZ"
어디
XXX == disk image file name (duh!)
YYY == window title displayed when DMG is opened
ZZZ == Path to a folder containing the files that will be copied into the DMG
답변
내 앱 DropDMG 는 배경 그림, 아이콘 레이아웃, 사용자 지정 볼륨 아이콘 및 소프트웨어 라이센스 계약으로 디스크 이미지를 만드는 쉬운 방법입니다. “dropdmg”명령 줄 도구 또는 AppleScript를 통해 빌드 시스템에서 제어 할 수 있습니다. 원하는 경우 사진 및 라이센스 RTF 파일을 버전 관리 시스템에 저장할 수 있습니다.
답변
– 나는 과정을 자동화하는이 위대한 맥 응용 프로그램을 발견 http://www.araelium.com/dmgcanvas/을
당신이 당신의 맥 앱 데미지 설치 프로그램을 작성하는 경우 당신이보고를해야합니다
