セットアップビルダー

Pythonアプリの配布を支援!

tags:python, tips, example, binary, installer, windows, utility
created:2007-02-05T20:24:24

Pythonアプリを簡単に配布する支援ツール Pythonアプリのインストーラを簡単に作ろう!

背景

Pythonアプリを素人ユーザに配布する時、

  • Python本体のセットアップ
  • 依存パッケージのセットアップ
  • PC環境設定
  • アプリ本体の配布

などなど、これらの手間は意外と大変。

バイナリ化したPythonアプリを簡単にインストールできる インストーラ を配布するのが一番安全確実ですね。

よく Inno Setup を用いたインストーラをちまちま作っていましたが、 数作っているうちに面倒になってしまいました。

そこで、今回の「セットアップビルダー」を作ることにしました。

依存するパッケージ

py2exe

詳細は「 py2exeモジュールについて 」ページを参照してください。

Inno Setup

ホームサイト にある「Inno Setup」は Delphi 製のインストーラ作成ツールです。

ダウンロードページ の 「ispack-5.1.10.exe」をダウンロード&インストールして置いてください。

簡易スクリプトを用いてインストーラを細かくカスタマイズ構築しようという類のツールです。 同種のものにWinAmpでおなじみの「null soft」の「nis」などもあります。 あとWindows純正といえば「msi」ですね。Python2.5からは「msilib」が追加され、Pythonユーザからは利用しやすくなりました。

innoの特徴はランタイム非依存なのにアウトプットがコンパクトです。 nisはさらにもう少しコンパクトですが、スクリプトの機能はシンプルになっています。(記述がちょっと多くなりがち) msiもコンパクトですがランタイム依存があるので当然ですね。

なぜinnoにしたのかというと使い慣れているという理由だけだと思います。 見た目がごくふつーなんで、初心者があまり怖がらないという点もウリかも。

セットアップビルダーのインストーラ

セットアップビルダーのインストーラを作成しました。

https://www.box.com/nobonobo-shared

リンク先の「 setup_builder-0.1.2.win32.exe 」をダウンロードして実行すれば デスクトップショートカットまで作成してくれます。

使い方

あらかじめアプリに関する情報が必要です。 メインスクリプトの先頭にて以下の例のような「APP_INFO」という宣言を記述して置いてください。

アイコンビルダの例:
APP_INFO = dict(
  TARGET_WINDOWS=False,
  APPNAME=u'アイコンビルダー',
  DESCRIPTION=u'PNGからアイコンを簡単に作成',
  PUBLISHER=u'PythonMatrixJp',
  URL=u'http://python.matrix.jp/projects/icon_builder.html',
  VERSION='1.0.2',
  PY2EXE_OPTIONS={},
  APPEND_FILES = [],
  APPEND_FOLDERS = []
)

その上でデスクトップにある「セットアップビルダ」というショートカットに メインスクリプトをドラッグ&ドロップするだけです。

「dist」フォルダには配布イメージが、「Output」フォルダにはインストーラが生成されるはずです。

APPNAME:
  アプリ名称で必須です。

PUBLISHER:
  公開者で必須です。

URL:
  ホームページで必須です(なければダミーを)

VERSION:
  バージョン番号で必須です。
  「0.0」から「0.0.0.0」という書式しか使えないようです。

TARGET_WINDOWS:
  コンソール画面が必要なら「False」を、
  コンソール画面が不要なら「True」を指定してください。
  省略すると「False」扱いです。

PY2EXE_OPTIONS:
  py2exeに対する設定上書き項目です。
  デフォルトは一番適用範囲の広い設定をしています。

APPEND_FILES:
  一緒に配布する追加ファイルです。
  メインのexeとおなじフォルダにインストールします。

APPEND_FOLDERS:
  一緒に配布する追加フォルダです。
  含まれる内容すべてをそのままの形でインストールします。

カスタマイズ

セットアップビルダー本体は以下のパスにあります。

本体:「Pythonインストールフォルダ\Scripts\setup_builder.py」

このスクリプトを編集することで、細かい設定をいじることが出来ます。

中身の主な内容は

  • パス関連ユーティリティ
  • py2exeセットアップ
  • Innoスクリプトテンプレート

などがあります。

ただし、ちょっとしたテンプレートやパラメータ変更以外の変更は、 書式文字列の処理や辞書オブジェクトの挙動などを把握してからにしましょう。

「TARGET_WINDOWS=True」について

実際にテストしているのは「wxPython」アプリケーションのみです。 この指定をした場合、py2exeが見つけられなかった wxPythonが要求するいくつかのランタイムのコピーを伴います。

その他のGUIを用いている場合ではおそらく無用のランタイムです。

結論

wxPythonアプリやコンソールアプリが 簡単にバイナリ化、インストーラ作成が行えるようになりました。

自分用のツールをとりあえず公開という形なので、 使っているうちにいろいろと要求がでるでしょう。 そういった要求をコメントやメールでお寄せいただければ、 暇を見て導入していきますので遠慮なく意見をください!

変更履歴

2007/3/28 0.1.2
パス処理バグフィックス