[рдореИрдХ] рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдВрджрд░ .dmg рдЫрд╡рд┐ рдмрдирд╛рдирд╛

рд╣реЗрдмрд░ рдХреЗ рд╕рдореНрдорд╛рдирд┐рдд рдирд┐рд╡рд╛рд╕рд┐рдпреЛрдВ рдХреЛ рдмрдзрд╛рдИ!

рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рд░ рдХреЛрдИ рдЬреЛ AppStore рд╕реЗ рди рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдбрд┐рдпрдо рдХреА рддрд░рд╣, рд╕реБрдВрджрд░ .DMg рдбрд┐рд╕реНрдХ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рдЖрдпрд╛ рд╣реИред рдРрд╕реА рдЫрд╡рд┐ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЗрдВрд╕реНрдЯреЙрд▓рд░, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдпрд╣рд╛рдВ рдЖрдЗрдХрди рдЦреАрдВрдЪреЗрдВред рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рд░рд▓ рд╣реИред

рдмреЗрд╢рдХ, рдПрдХ рдЕрдиреБрднрд╡реА рдореИрдХ рдУрдПрд╕ рдкреНрд▓реЗрдпрд░ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЬрд╝рд┐рдк рдЖрд░реНрдХрд╛рдЗрд╡ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рд╕реБрдВрджрд░ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред рддреЛ, рд╣рдо, рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ, рдЖрдЬ рд╣рдорд╛рд░реЗ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдХрд┐рд╕реА рдФрд░ рдХреЗ) рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕реБрдВрджрд░ рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВрдЧреЗред

рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рдм рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░рд╛ рддрд░реАрдХрд╛ тДв рдирд╣реАрдВ рд╣реИ , рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗред рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реИ, рдлрд┐рд░ рдпрд╣ рд╕рд░реНрд╡рд░ рди рдХреЗрд╡рд▓ рд╕реНрд░реЛрдд рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛, рдмрд▓реНрдХрд┐ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рднреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЕрдВрдд рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред

рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:


рдорд╣рддреНрд╡рдкреВрд░реНрдг! рдпрджрд┐ TotalFinder (рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреА рдЪреАрдЬрд╝) рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, AppleScript рд╢рд╛рдорд┐рд▓ рд╣реИ) рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ! рдЧрдВрднреАрд░рддрд╛ рд╕реЗред

рдЕрдм, рд╕рднреА рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рддреИрдпрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдкреИрдХ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЫрд╡рд┐ рдирд╛рдо рдорд┐рд▓реЗрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

TMP_DIR="./tmp" APP_BUNDLE_NAME="MyGreatApplication.app" APP_VERSION=`/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "${APP_BUNDLE_NAME}/Contents/Info.plist"` APP_BUILD_VERSION=`/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "${APP_BUNDLE_NAME}/Contents/Info.plist"` DMG_NAME_BASE=${APP_BUNDLE_NAME%.*} DMG_NAME_SUFFIX=" ${APP_VERSION}.${APP_BUILD_VERSION}" DMG_NAME="${DMG_NAME_BASE}${DMG_NAME_SUFFIX}.dmg" VOL_NAME=${APP_BUNDLE_NAME%.*} 

рдпрд╣рд╛рдВ рд╣рдордиреЗ рдмрдВрдбрд▓ рдХреЗ рдирд╛рдо рдХреЛ рдкреИрдХ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдкреНрд▓рд┐рд╕реНрдЯрдмреЙрдбреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рднрд╡рд┐рд╖реНрдп рдХреА рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рдХреЗ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддреНрдпрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИред рдмрдврд╝рддреЗ рд╕рдордп, рд╣рдо рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо рдХреЗрд╡рд▓ рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рдмрдВрдбрд▓ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдбреНрдпреБрдЯрд┐рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░реЗрдВ

 hdiutil create -ov -srcfolder ${TMP_DIR} -format UDRW -volname "${VOL_NAME}" "${DMG_NAME_TMP}" 

рдпрд╣рд╛рдВ рдкреИрд░рд╛рдореАрдЯрд░ TMP_DIR , VOL_NAME рдФрд░ DMG_NAME_TMP рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИрдВ, рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо (рдЬреЛ рдмрдврд╝рддреЗ рд╕рдордп рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛) рдФрд░ рдЕрд╕реНрдерд╛рдпреА .dmg рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдХреНрд░рдорд╢рдГред -format UDRW рдЫрд╡рд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ: рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдбреАрдЖрдИрдПрдл рдЫрд╡рд┐ред рд╣рдореЗрдВ рдШреБрдбрд╝рд╕рд╡рд╛рд░ рдЫрд╡рд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред -Ov рдкреИрд░рд╛рдореАрдЯрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдЫрд╡рд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИ рдЕрдЧрд░ рд╣рдордиреЗ рдЗрд╕реЗ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рдерд╛ред

рдЕрдм рдкрд░рд┐рдгрд╛рдореА рдЫрд╡рд┐ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ (рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдирд╛рдо рд╕рд╣реЗрдЬреЗрдВ):

 device=$(hdiutil attach -readwrite -noverify -noautoopen ${DMG_NAME_TMP} | egrep '^/dev/' | sed 1q | awk '{print $1}') 

рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рд╣рдо рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЦреЛрдЬрдХ рд╡рд┐рдВрдбреЛ рдирд╣реАрдВ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдореЗрдВ рдЯрд╛рдЗрдк рдирд╛рдо /dev/disk2 disk2 рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ egrep, sed рдФрд░ awk hdiutil рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкрд╛рд░реНрд╕ рд╣реЛрддрд╛ рд╣реИред

рдЕрдм рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдФрд░ рдЖрдЗрдХрди рдХреЛ рдЫрд╡рд┐ рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ, рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдмрдВрдбрд▓ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЙрдиреНрд╣реЗрдВ рдХрд╣реАрдВ рдФрд░ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ):

 BG_FOLDER="/Volumes/${VOL_NAME}/.background" mkdir "${BG_FOLDER}" cp "${APP_BUNDLE_NAME}/Contents/Resources/${BG_IMG_NAME}" "${BG_FOLDER}/" ICON_FOLDER="/Volumes/${VOL_NAME}" cp "${APP_BUNDLE_NAME}/Contents/Resources/${VOL_ICON_NAME}" "${ICON_FOLDER}/.VolumeIcon.icns" 

рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХреА рдЧрдИ рдЫрд╡рд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдлрд╛рдЗрдВрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдЪрд╛рд▓рд╛рдХреА рд╕реЗ рдХрд░реЗрдВрдЧреЗ: рдлрд╛рдЗрдВрдбрд░ рдХреЛ AppleScript рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд░ рджреЗрдЧрд╛ред рд╢реЗрд▓ рд╕реЗ рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдСрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЗрдирдкреБрдЯ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╡рд░реНрдХрдкреАрд╕ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВрдЧреЗ:

 APPLESCRIPT=" tell application \"Finder\" tell disk \"${VOL_NAME}\" open -- Setting view options 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 {${WINDOW_LEFT}, ${WINDOW_TOP}, ${WINDOW_RIGHT}, ${WINDOW_BOTTOM}} set theViewOptions to the icon view options of container window set arrangement of theViewOptions to not arranged set icon size of theViewOptions to 72 -- Settings background set background picture of theViewOptions to file \".background:${BG_IMG_NAME}\" -- Adding symlink to /Applications make new alias file at container window to POSIX file \"/Applications\" with properties {name:\"Applications\"} -- Reopening close open -- Rearranging set the position of item \"Applications\" to {${APPS_X}, ${APPS_Y}} set the position of item \"${APP_BUNDLE_NAME}\" to {${BUNDLE_X}, ${BUNDLE_Y}} -- Updating and sleeping for 5 secs update without registering applications delay 5 end tell end tell " echo "$APPLESCRIPT" | osascript 

рдмреЗрд╢рдХ, VOL_NAME рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдмрдЬрд╛рдп, рд╣рдорд╛рд░реА рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреВрд░реНрд╡-рддреИрдпрд╛рд░ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░ рджреЗрдЧреАред рдпрд╣ AppleScript рдлреИрдбрд░ рдХреЛ рд╣рдорд╛рд░реЗ рдорд╛рдЙрдВрдЯреЗрдб рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░реЗрдВ: рдкрддрд╛ рдФрд░ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, "рдЖрдЗрдХрди" рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░реЗрдВ, рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░, рдЖрдЗрдХрди рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрди рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ .DS_Store рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдЧрд▓рд╛, рд╣рдо рдкрд╣рд▓реЗ рдХреЙрдкреА рдХреА рдЧрдИ рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рдЫрд╡рд┐ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ - / рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдорд▓рд┐рдВрдХ (рдЕрдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЙрдкрдирд╛рдо) рдмрдирд╛рдПрдВ, рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВред рдЕрдм рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдЗрдХрди рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдмрдирд╛рдП рдЧрдП рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП 5 рд╕реЗрдХрдВрдб рд╕реЛрддреЗ рд╣реИрдВред

рдЕрдм SetFile рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдЖрдЗрдХрди рд╕реЗрдЯ рдХрд░реЗрдВ:

 SetFile -c icnC "${ICON_FOLDER}/.VolumeIcon.icns" SetFile -a C "${ICON_FOLDER}" 

рдЕрдЧрд▓рд╛, рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдзрд┐рдХрд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ, рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВ (рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рджреЛ рдмрд╛рд░) рдФрд░ рдЫрд╡рд┐ рдирд┐рдХрд╛рд▓реЗрдВ:

 chmod -Rf go-w /Volumes/"${VOL_NAME}" sync sync hdiutil detach ${device} 

рдпрд╣реА рд╣реИ, рдЕрдм рдЖрдк рдЕрдВрддрд┐рдо рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ!

 hdiutil convert "${DMG_NAME_TMP}" -format UDZO -imagekey zlib-level=9 -o "${DMG_NAME}" 

рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЫрд╡рд┐ рдХреЛ рд╕рдВрдкреАрдбрд╝рди рд╕реНрддрд░ 9 (рд╕рд░реНрд╡реЛрддреНрддрдо) рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЫрд╡рд┐ рдХреЛ рдпреВрдбреАрдЬреЗрдбреЛ рдкреНрд░рд╛рд░реВрдк (рдпреВрдбреАрдЖрдИрдПрдл рд╕рдВрдкреАрдбрд╝рд┐рдд) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рдореЗрдВ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЖрдХрд░реНрд╖рдХ рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ!

рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреАрдереВрдм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ (рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдмрд╣реБрдд рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ), рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╣рд╛рд░реНрдбрдХреЛрдб рдирд╣реАрдВ рд╣реИ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред рдЦреИрд░, рдкреЛрд╕реНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЪрд┐рддреНрд░ рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 $ make_dmg.sh -V -b habr_logo_big.png -i habr_icon.icns -s "800:500" -c 535:345:253:345 "Hello Habr.app" Enabling version info in resulting dmg Setting background to habr_logo_big.png Setting icon to habr_icon.icns Setting window size to 800:500 Setting coordinates to 535:345:253:345 Bundle name set to Hello Habr.app Defaulting dmg volume name to Hello Habr *** Copying Hello Habr.app to the temporary dir... done! *** Creating temporary dmg disk image......... created: /Users/silvansky/Projects/habr_demo_dmg/Hello Habr_tmp.dmg *** Mounting temporary image... done! (device /dev/disk1) *** Sleeping for 5 seconds... done! *** Setting style for temporary dmg image... * Copying background image... done! * Copying volume icon... done! * Setting volume icon... done! * Executing applescript for further customization... done! *** Converting tempoprary dmg image in compressed readonly final image... * Changing mode and syncing... chmod: /Volumes/Hello Habr/.Trashes: Permission denied * Detaching /dev/disk1... "disk1" unmounted. "disk1" ejected. * Converting...    тАж  Driver Descriptor Map (DDM : 0)тАж (CRC32 $AF5ACFAD: Driver Descriptor Map (DDM : 0))  Apple (Apple_partition_map : 1)тАж (CRC32 $92261EDC: Apple (Apple_partition_map : 1))  disk image (Apple_HFS : 2)тАж ................................................................................................................................................................................... (CRC32 $F59F12B2: disk image (Apple_HFS : 2))  (Apple_Free : 3)тАж .................................................................................................................................................................................... (CRC32 $00000000: (Apple_Free : 3))  тАж .................................................................................................................................................................................... : 804.502ms  : 4132028 , : CRC32 $AFE83FC5  : 13243, 10041  : 6.1 M/ : 39.1 % created: /Users/silvansky/Projects/habr_demo_dmg/Hello Habr 1.0.1.dmg done! *** Removing temporary image... done! *** Cleaning up temp folder... done! *** Everything done. DMG disk image is ready for distribution. 

рдЦреИрд░, рдЕрдм рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╛рдлреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХред рд╕рдлрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ!

Source: https://habr.com/ru/post/In152677/


All Articles