# -*- coding: utf-8 -*- import biplist import os.path def icon_from_app(app_path): plist_path = os.path.join(app_path, "Contents", "Info.plist") plist = biplist.readPlist(plist_path) icon_name = plist["CFBundleIconFile"] icon_root, icon_ext = os.path.splitext(icon_name) icon_name = icon_root + (icon_ext or ".icns") return os.path.join(app_path, "Contents", "Resources", icon_name) def validate_key_path(key, example): value = defines.get(key, None) if value is None: raise ValueError("The " + key + " key must be specified.\n" "Example: dmgbuild -D " + key + "=" + example + " ...") if not os.path.exists(value): raise ValueError("The " + key + " key must be a valid path.") return value # Path of the applications to deploy app_path = validate_key_path("app_path", "Jamulus.app") server_path = validate_key_path("server_path", "JamulusServer.app") # Name of the applications to deploy app_name = os.path.basename(app_path) server_name = os.path.basename(server_path) # Volume format (see hdiutil create -help) format = defines.get("format", "UDBZ") # Volume size size = defines.get('size', None) # Files to include files = [ app_path, server_path ] # Symlinks to create symlinks = { 'Applications': '/Applications' } # Background background = validate_key_path("background", "picture.png") # Volume icon badge_icon = icon_from_app(app_path) # Select the default view default_view = "icon-view" # Set these to True to force inclusion of icon/list view settings include_icon_view_settings = False include_list_view_settings = False # Where to put the icons icon_locations = { app_name: (630, 210), server_name: (530, 210), "Applications": (820, 210) } # View/Window element configuration show_status_bar = False show_tab_view = False show_toolbar = False show_pathbar = False show_sidebar = False show_icon_preview = False # Window position in ((x, y), (w, h)) format window_rect = ((200, 400), (900, 320)) # Icon view configuration arrange_by = None grid_offset = (0, 0) grid_spacing = 72 scroll_position = (0, 0) label_pos = "bottom" icon_size = 72 text_size = 12 # License configuration license = { "default-language": "en_US", "licenses": { "en_US": validate_key_path("license", "COPYING") } }