実行可能なインストーラは、Windows 環境ではごく自然なバイナリ配布形式 です。インストーラは結構なグラフィカルユーザインタフェースを表示して、 モジュール配布物に関するいくつかの情報を setup スクリプト内のメタデータ から取り出して示し、ユーザがいくつかのオプションを選んだり、インストール を決行するか取りやめるか選んだりできるようにします。
メタデータは setup スクリプトから取り出されるので、Windows インストーラ の作成は至って簡単で、以下を実行するだけです:
python setup.py bdist_wininst
あるいは、bdist
コマンドを --formats
オプション付きで実行します:
python setup.py bdist --formats=wininst
(pure Python モジュールとパッケージだけの入った) pure モジュール 配布物の場合、作成されるインストーラは実行バージョンに依存しない 形式になり、 foo-1.0.win32.exe のような名前になります。 pure モジュールの Windows インストーラは Unix や Mac OS といったプラットフォームでも作成できます。
非 pure 配布物の場合、拡張モジュールは Windows プラットフォーム上 だけで作成でき、Python のバージョンに依存したインストーラになります。 インストーラのファイル名もバージョン依存性を反映して、 foo-1.0.win32-py2.0.exe のような形式になります。 従って、サポートしたい全てのバージョンの Python に対して、 別々のインストーラを作成しなければなりません。
インストーラは、ターゲットとなるシステムにインストールを実行
した後、 pure モジュールを通常 (normal) モードと最適化 (optimizing)
モードでコンパイルしようと試みます。何らかの理由があってコンパイル
させたくなければ、bdist_wininst
コマンドを
--no-target-compile かつ/または
--no-target-optimize オプション付きで実行します。
デフォルトでは、インストーラは実行時にクールな ``Python Powered'' ロゴを表示しますが、自作のビットマップ画像も指定できます。 画像は Windows の .bmp ファイル形式でなくてはならず、 --bitmap オプションで指定します。
インストーラを起動すると、デスクトップの背景ウィンドウ上にでっかい タイトルも表示します。タイトルは配布物の名前とバージョン番号から 作成します。--title オプションを使えば、 タイトルを別のテキストに変更できます。
インストーラファイルは ``配布物ディレクトリ (distribution directory)'' -- 通常は dist/ に作成されますが、--dist-dir オプションで指定することもできます。
Python 2.3 からは、インストール実行後スクリプトを --install-script オプションで指定できるように なりました。スクリプトはディレクトリを含まないベースネーム (basename) で指定しなければならず、スクリプトファイル名は setup 関数の scripts 引数中に挙げられていなければなりません。
指定したスクリプトは、インストール時、ターゲットとなるシステム上で
全てのファイルがコピーされた後に実行されます。このとき argv[1]
を -install に設定します。また、アンインストール時には、
ファイルを削除する前に argv[1]
を -remove に設定して
実行します。
Windows インストーラでは、インストールスクリプトは埋め込みで実行
され、全ての出力 (sys.stdout
、 sys.stderr
) はバッファにリダイレクト
され、スクリプトの終了後に GUI 上に表示されます。
インストールスクリプトでは、インストール/アンインストール のコンテキストで特に有用ないくつかの機能を、追加の組み込み関数として利 用することができます。
path) |
path) |
csidl_string) |
"CSIDL_APPDATA" "CSIDL_COMMON_STARTMENU" "CSIDL_STARTMENU" "CSIDL_COMMON_DESKTOPDIRECTORY" "CSIDL_DESKTOPDIRECTORY" "CSIDL_COMMON_STARTUP" "CSIDL_STARTUP" "CSIDL_COMMON_PROGRAMS" "CSIDL_PROGRAMS" "CSIDL_FONTS"
該当するフォルダを取得できなかった場合、 OSError が送出されます。
どの種類のフォルダを取得できるかは、特定の Windows のバージョン ごとに異なります。また、おそらく設定によっても異なるでしょう。 詳細については、 SHGetSpecialFolderPath() 関数に関する Microsoft の ドキュメントを参照してください。
target, description, filename[, arguments[, workdir[, iconpath[, iconindex]]]]) |
この関数はショートカットを作成します。 target はショートカットによって起動されるプログラムへのパスです。 description はショートカットに対する説明です。 filename はユーザから見えるショートカットの名前です。 コマンドライン引数があれば、arguments に指定します。 workdir はプログラムの作業ディレクトリです。 iconpath はショートカットのためのアイコンが入ったファイルで、 iconindex はファイル iconpath 中のアイコンへのインデクス です。これについても、詳しくはIShellLink インタフェースに 関する Microsoft の ドキュメントを参照してください。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。