Fix setting dmg icon for osx build. Icon is now set without Mac gui (Finder).

This commit is contained in:
Martin Zibricky 2012-06-25 00:35:37 +02:00
parent 12fd1af4fb
commit 04c73e4c45
2 changed files with 25 additions and 59 deletions

0
osx/DmgImageInstallBackground.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -555,23 +555,38 @@ class MacosxBuilder(object):
u'Could not copy app bundle, dmg creation failed.'
)
self._print('... Copying the background image.')
os.mkdir(os.path.join(dmg_volume_path, '.background'))
self._run_command(['cp', self.dmg_background_img,
os.path.join(dmg_volume_path,
'.background/installer-background.png')],
u'Could not copy the background image, dmg creation failed.'
)
# Set dmg background. Requires running Mac OS X gui.
# TODO: better formatting and code refactoring
if not self.args.devel:
self._print('... Setting the background image.')
os.mkdir(os.path.join(dmg_volume_path, '.background'))
self._run_command(['cp', self.dmg_background_img,
os.path.join(dmg_volume_path,
'.background/installer-background.png')],
u'Could not copy the background image, dmg creation failed.'
)
self.adjust_package_view({'openlp_dmg_icon_file':
self.dmg_background_img,'openlp_appname': 'OpenLP' },
os.path.join(self.script_path,
'applescript-adjustview-10-6.master'))
# Set icon for dmg file.
# http://endrift.com/blog/2010/06/14/dmg-files-volume-icons-cli/
self._print('... Setting the dmg icon.')
dmg_icon = os.path.join(dmg_volume_path, '.VolumeIcon.icns')
self._run_command(['cp', self.mac_icon, dmg_icon],
u'Could not copy the dmg icon file, dmg creation failed.'
)
# Set proper dmg icon attributes.
self._run_command(['SetFile', '-c', 'icnC', dmg_icon],
'Could not set dmg icon attributes.')
# Ensures dmg icon will be used while mounted.
self._run_command(['SetFile', '-a', 'C', dmg_volume_path],
'Could not set dmg icon attributes.')
# Unmount dmg file.
self._print('... unmounting the dmg.')
self._run_command([self.hdiutil, 'detach', dmg_volume_path],
@ -606,9 +621,7 @@ class MacosxBuilder(object):
self._print('Finished creating dmg file, resulting file: %s' %
compressed_dmg)
# TODO Reimplement following actions.
#seticon_scriptname = "applescript-seticon-10-6.master"
#compress_view(settings, seticon_scriptname, dmg_file)
self.dmg_file = compressed_dmg
def adjust_package_view(self, settings, adjustview_scriptname):
#logging.info('[%s] making adjustments to the view...', script_name)
@ -635,7 +648,6 @@ class MacosxBuilder(object):
# failed!', script_name, e)
sys.exit(1)
def main(self):
"""
The main function to run the Mac OS X builder.
@ -648,7 +660,7 @@ class MacosxBuilder(object):
self._print_verbose(u'Source path: .............%s', self.source_path)
self._print_verbose(u'"dist.app" path: .........%s', self.dist_app_path)
self._print_verbose(u'"dist" path: .............%s', self.dist_path)
self._print_verbose(u'"hooks" path: .............%s', self.hooks_path)
self._print_verbose(u'"hooks" path: ............%s', self.hooks_path)
self._print_verbose(u'PyInstaller: .............%s', self.pyinstaller)
self._print_verbose(u'Documentation branch path:%s', self.docs_path)
self._print_verbose(u'')
@ -680,49 +692,3 @@ class MacosxBuilder(object):
if __name__ == u'__main__':
MacosxBuilder().main()
# TODO reimplement following options. They arenecessary for release builds.
def compress_view(settings, seticon_scriptname, dmg_file):
logging.info('[%s] setting icon of the dmg file...', script_name)
try:
f = open(seticon_scriptname)
p = subp.Popen(["osascript"], stdin=subp.PIPE)
p.communicate(f.read() % ((os.getcwd() + '/' +
settings['openlp_dmg_icon_file']), dmg_file))
f.close()
result = p.returncode
if (result != 0):
logging.error('[%s] could not set the icon to the dmg file, \
dmg creation failed!', script_name)
sys.exit(1)
except IOError, e:
logging.error('[%s] could not adjust the view (%s), dmg creation \
failed!', script_name, e)
sys.exit(1)
except OSError, e:
logging.error('[%s] could not set the icon to the dmg file(%s), \
dmg creation failed!', script_name, e)
sys.exit(1)
def old_main():
version = platform.mac_ver()[0]
# we only need the differenciation between leopard and snow leopard
if version.startswith("10.6") or version.startswith("10.7"):
SNOWLEOPARD = True
logging.info('[%s] using snow leopard scripts (version = %s)',
script_name, version)
else:
SNOWLEOPARD = False
logging.info('[%s] using leopard scripts (version = %s)', script_name,
version)
adjustview_scriptname = "applescript-adjustview-10-5.master"
seticon_scriptname = "applescript-seticon-10-5.master"
if not os.path.isfile(adjustview_scriptname) \
or not os.path.isfile(seticon_scriptname):
logging.error('[%s] could not find apple scripts for given OS X '
+ 'version %s', script_name, version)
sys.exit(1)