0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

cx_freezeでインストーラを作成する方法

Posted at

概要

この記事ではcx_freezeを使用してインストーラを作成する方法を紹介しています。
インストーラを作成するときに、デスクトップおよびスタートメニューのショートカットの作成有無やアイコンの設定などもできる方法となります。

cx_freezeのインストール

cx_freezeは以下のコマンドでインストールできます。

pip install cx_freeze

cx_freezeでインストーラを作成

  1. まず、cx_freezeでインストーラを作成するには以下のsetup.pyを作成する (コピペでOK)

    import sys
    from cx_Freeze import setup, Executable
    
    ##############################################
    ##############################################
    ##############################################
    # 以下はアプリごとに変更
    
    # バージョン
    VERSION = "1.0"
    # アプリ名
    APP_NAME = "Test App"
    # exeファイル名 (フォルダ名などになるためスペース等が無い方がよい)
    EXE_NAME = "TestApp"
    # アプリの説明
    DESCRIPTION = "テストアプリ"
    # 作成者
    AUTHOR = "Author"
    # 含めたいライブラリ等
    PACKAGES = ["numpy", "matplotlib"]
    # 含めたいファイルやフォルダ
    INCLUDE_FILES = ["icons/"]
    # Pythonのソースコードファイル名
    SCRIPT_FILENAME = "app.py"
    # アイコンファイルパス (Noneでなしに設定)
    ICON_PATH = "icons/icon.ico"
    # デスクトップにショートカットを作成するか
    ADD_DESKTOP_SHORTCUT = True
    # スタートメニューにショートカットを追加するか
    ADD_START_MENU_SHORTCUT = True
    # コンソール画面を無効化するか
    WITHOUT_CONSOLE = True
    # UUID (一度決めたら変更しない)
    UUID = "00000000000000000000000000000000"
    
    ##############################################
    ##############################################
    ##############################################
    # 以下は基本的に変更しない
    
    exe_name_without_dot_exe = defines.EXE_NAME.replace(".exe", "")
    exe_name_with_dot_exe = exe_name_without_dot_exe + ".exe"
    
    shortcut_table = list()
    if ADD_DESKTOP_SHORTCUT:
        shortcut_table.append(
            (
                "DesktopShortcut",  # Shortcut
                "DesktopFolder",  # Directory
                APP_NAME,  # Name
                "TARGETDIR",  # Component_
                "[TARGETDIR]" + exe_name_with_dot_exe,  # Target
                None,  # Arguments
                None,  # Description
                None,  # Hotkey
                "" if ICON_PATH is not None else None,  # Icon
                0 if ICON_PATH is not None else None,  # IconIndex
                None,  # ShowCmd
                "TARGETDIR",  # WkDir
            )
        )
    
    if ADD_START_MENU_SHORTCUT:
        shortcut_table.append(
            (
                "StartMenuShortcut",  # Shortcut
                "ProgramMenuFolder",  # Directory
                APP_NAME,  # Name
                "TARGETDIR",  # Component_
                "[TARGETDIR]" + exe_name_with_dot_exe,  # Target
                None,  # Arguments
                None,  # Description
                None,  # Hotkey
                "" if ICON_PATH is not None else None,  # Icon
                0 if ICON_PATH is not None else None,  # IconIndex
                None,  # ShowCmd
                "TARGETDIR",  # WkDir
            )
        )
    
    # Now create the table dictionary
    msi_data = {"Shortcut": shortcut_table}
    
    # Change some default MSI options and specify the use of the above defined tables
    bdist_msi_options = {"upgrade_code": UUID, "add_to_path": False, "data": msi_data}
    
    build_exe_options = {
        "packages": PACKAGES,
        # 取り込みたいファイルやフォルダ名を記載します。
        "include_files": INCLUDE_FILES,
    }
    
    base = None
    if sys.platform == "win32" and WITHOUT_CONSOLE:
        base = "Win32GUI"
    
    setup(
        name=exe_name_without_dot_exe,
        version=VERSION,
        description=DESCRIPTION,
        author=AUTHOR,
        options={"build_exe": build_exe_options, "bdist_msi": bdist_msi_options},
        executables=[
            Executable(
                script=SCRIPT_FILENAME,  # メインのPythonスクリプト
                base=base,
                target_name=exe_name_with_dot_exe,  # ビルド後の実行ファイル名
                icon=ICON_PATH,
            ),
        ],
    )
    
    
    

  2. 次に、setup.pyの内容を自分のアプリ用に変更する

    以下は設定する必要のある内容です。

    名称 変数名 説明
    アプリバージョン VERSION アプリのバージョンを"1.0"のように入力
    アプリ名 APP_NAME アプリの名前(スペースありでもよい)
    exeファイル名 EXE_NAME フォルダ名等に使用(スペース等が無い方がよい)
    アプリ説明 DESCRIPTION 説明はなくてもよい
    作成者 AUTHOR アプリの作成者
    パッケージ PACKAGES アプリに使用しているライブラリを記載
    含めたいファイル INCLUDE_FILE インストーラに含めたいファイル
    スクリプト SCRIPT_FILENAME Pythonで作成した.pyファイル
    アイコン ICON_PATH アイコンファイル(Noneでなし)
    デスクトップショートカット ADD_DESKTOP_SHORTCUT デスクトップにショートカットを作成するかどうか
    スタートメニューショートカット ADD_START_MENU_SHORTCUT スタートメニューにショートカットを作成するかどうか
    コンソール画面無効化 WITHOUT_CONSOLE 黒いコンソール画面を表示するか
    UUID UUID アプリケーションを一意に識別するためのID

  3. インストーラを作成する
    setup.pyの上部分に必要な情報を記載したら、あとは以下のコマンドを実行してインストーラを作成すれば完了です。

    python setup.py bdist_msi
    

  4. 完成したインストーラを確認する
    完成したインストーラはdistというフォルダの中に入っています。
    自分のPCにインストールして、動作等を確認してください。

終わりに

cx_freezeを使用してPython用のexeインストーラを作成する方法を紹介しました。
pyinstallerがよく使われると思うので、cx_freezeの情報を集めることが大変だったのでこの記事が参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?