絖綛 N@i.jp  昨日:00019694
 今日:00013765
 総計:00051815
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:10/01 12:07


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

cx_Freeze で Macアプリを作成する(2)

カスタムアイコンと"Info.plist"のこと


5. 最終的な setupスクリプト

 'excludes'で不要なパッケージを取り込まないように指定することで、作成後のアプリのサイズを小さくすることができる。最終的に出来上がった setupスクリプト(例)は次のようになった。

# -*- coding: utf-8 -*-
import sys
from cx_Freeze import setup, Executable


application = 'SimpleTkApp'
includes = []
include_files = [
    ('/Library/Frameworks/Tcl.framework/Resources/Scripts', 'tcl8.5'),
    ('/Library/Frameworks/Tk.framework/Resources/Scripts', 'tk8.5')
]
packages = ['os', 'sys', 'tkinter']
excludes = ['email', 'html', 'http', 'urlib',
            'logging', 'ctypes', 'distutils',
            'multiprocessing', 'pydoc_data',
            'test', 'unittest',
            'xml', 'xmlrpc'
]

build_exe_options = {
    'includes': includes,
    'include_files': include_files,
    'packages': packages,
    'excludes': excludes,
    'optimize': 2
}

bdist_mac_options = {
    'bundle_name': application,
    'iconfile': 'icon_file.icns',
    'include_frameworks': []
}

exe = [
    Executable(script='SimpleTkApp.py',
               base=None,
               targetName=application)
]


setup(name=application,
      version='1.0.0',
      description='Simple tkinter application',
      options={
          'build_exe': build_exe_options,
          'bdist_mac': bdist_mac_options
      },
      executables=exe)

 上記の setupファイルで作成すると、サイズは 24.7MB程度に抑えられた。(それでも大きいが・・・)

 また、bdist_maciconfileオプション(上ではbdist_mac_options辞書の'iconfile'項目)でカスタムアイコンを指定している。ここに Macのアイコンファイル(.icns)を指定することで、作成するアプリケーションにカスタムアイコンを付けることができる。ただ、アプリ内にアイコンファイルを取り込む際、必ず"icon.icns"というファイル名に変更されてしまうようだ。これで注意しなければいけないのは、「情報を見る」で表示されるアプリの情報をカスタマイズする場合だ。
 「情報を見る」で表示される情報は、アプリ内の"Info.plist"にXML形式で記述されている。py2app では辞書形式で項目毎にカスタマイズできた(Tweaking your Info.plistを参照)が、cx_Freeze では事前にカスタマイズした"Info.plist"ファイルを作成し、bdist_mac'custom_info_plist'オプションで指定しなければならない。例えば、

bdist_mac_options = {
    'bundle_name': application,
    'iconfile': 'icon_file.icns',
    'custom_info_plist': 'tkapp_info.plist',
    'include_frameworks': []
}

といった具合になる。ここで指定した"tkapp_info.plist"ファイル内にアプリの情報を記述するのだが、その中にはカスタムアイコンに関する情報(CFBundleIconFileキー項目)もある。このキー項目の値は必ずicon.icnsにしておかないとカスタムアイコンが設定されなくなってしまうので、注意が必要だ。
 例えば"tkapp_info.plist"ファイルは以下のようになる。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundleDisplayName</key>
    <string>Simple_Tk_Application</string>
    <key>CFBundleExecutable</key>
    <string>SimpleTkApp</string>
    <key>CFBundleName</key>
    <string>SimpleTkApp</string>
    <key>CFBundleGetInfoString</key>
    <string>Simple Tk application 1.0.0</string>
    <key>CFBundleIconFile</key>
    <string>icon.icns</string>
    <key>CFBundleIdentifier</key>
    <string>jp.ddo.y-naito.SimpleTkApp</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0.0</string>
    <key>CFBundleVersion</key>
    <string>1.0.0</string>
    <key>NSHumanReadableCopyright</key>
    <string>Copyright (C) 2016 N@i, All Rights Reserved</string>
</dict>
</plist>

このように"Info.plist"ファイルを自力で作成しなければならない事も cx_Freeze のハードルを高くしている。やはり py2app の方が扱いやすい。


< 過去の記事 [ 12月の プログラミング リスト ] 新しい記事 >

2016 calendar
12月
123
45678910
11121314151617
18192021222324
25262728293031


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.