on saveImageWithItselfAsIcon(icon_image_file) -- save icon_image_file with itself as icon set icon_image_file_string to icon_image_file as string tell application "Image Events" launch set icon_image to open file icon_image_file_string save icon_image with icon close icon_image end tell end saveImageWithItselfAsIcon on copyIconOfTo(aFileOrFolderWithIcon, aFileOrFolder) tell application "Finder" to set f to aFileOrFolderWithIcon as alias -- grab the file's icon my CopyOrPaste(f, "c") -- now the icon is in the clipboard tell application "Finder" to set c to aFileOrFolder as alias my CopyOrPaste(result, "v") end copyIconOfTo on CopyOrPaste(i, cv) tell application "Finder" activate set infoWindow to open information window of i set infoWindowName to name of infoWindow end tell tell application "System Events" to tell process "Finder" to tell window infoWindowName keystroke tab -- select icon button keystroke (cv & "w") using command down (* (copy or paste) + close window *) end tell -- window 1 then process Finder then System Events end CopyOrPaste on run set icon_image_file to POSIX file "%s" as alias set dmg_file to POSIX file "/Volumes/%s" as alias my saveImageWithItselfAsIcon(icon_image_file) -- wait for virus scanner delay 2 my copyIconOfTo(icon_image_file, dmg_file) tell application "Finder" tell disk "%s" 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, 1100, 500} set theViewOptions to the icon view options of container window set arrangement of theViewOptions to not arranged set icon size of theViewOptions to 128 set background picture of theViewOptions to file ".background:installer-background.png" if not exists file "Applications" then make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"} end if delay 1 set position of item "%s" of container window to {160, 200} set position of item ".Trashes" of container window to {100, 500} set position of item ".background" of container window to {200, 500} set position of item ".DS_Store" of container window to {400, 500} set position of item "Applications" of container window to {550, 200} if exists file ".VolumeIcon.icns" then set position of item ".VolumeIcon.icns" of container window to {500, 500} end if set position of item ".fseventsd" of container window to {300, 500} if exists POSIX file ".SymAVx86QSFile" then set position of item ".SymAVx86QSFile" of container window to {600, 500} end if open close update without registering applications -- wait until the virus scan completes delay 5 -- eject end tell end tell end run