PythonでGUIアプリを開発しています。私はcx_Freeze自分のアプリを OS X ユーザー向けの.app//.dmgファイルに変換するために使用します。したがって、たとえば、ユーザーがアプリをインストールするために使用できるファイルをpython setup.py bdist_dmgcx_Freeze に作成させるために使用できます。.dmg
アプリが自動的に更新されるようになりました。Eskyは、これを行うための有望なフレームワークのようです。python setup.py bdist_esky自分自身を更新するアプリのバージョンを作成することができます。次のディレクトリ構造が生成されます。
myappmyapp-0.1/myapp- ...
- ...
最上位myappは、Esky のブートストラップ実行可能ファイルです。現在のディレクトリを検索myapp-0.1/し、最新バージョンとして検索して起動しmyapp-0.1/myappます。
.dmgこれをユーザーに配布できるファイルにパッケージ化するにはどうすればよいですか? 仕事に取り掛かるsetup.pyように変更した後、機能しなくなりました。私が得た印象は、Esky は. そのドキュメントにはファイルについてまったく言及されておらず、Google でも何も見つかりませんでした。bdist_eskybdist_dmgbdist_dmgDMG
最初のステップとして、Esky によって生成されたファイルを手動で OS X.app/バンドルに変換しようとしました。
myapp.app/Contents/Info.plistMacOS/myappmyapp-0.1/myapp- ...
- ...
Info.plistOS X を実行するために必要な最小限の情報が含まれていますmyapp。myapp.appただし、実行しようとすると、次のようになります。
Traceback (most recent call last):
File "<string>", line 318, in bootstrap
File "<string>", line 442, in get_best_version
FileNotFoundError: [Errno 2] No such file or directory: '/Users/michael/Temp/myapp.app/appdata'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 689, in <module>
File "<string>", line 335, in bootstrap
RuntimeError: no usable frozen versions were found
Esky のソース コードを見ると、そのappdir_from_executable(...)関数には OS X バンドル用の特別な処理が含まれているようです。Esky を喜ばせるために、appdata/実際に存在するようにファイルを再配置しようとしました。
myapp.app/appdata/myapp-0.1/myapp- ...
Contents/Info.plistMacOS/myapp- ...
残念ながら、これにより別のエラーが発生します。
Traceback (most recent call last):
File "<string>", line 689, in <module>
File "<string>", line 336, in bootstrap
File "<string>", line 363, in chainload
File "<string>", line 425, in _chainload
UnboundLocalError: local variable 'exc_value' referenced before assignment
これは本当に難しいですか?Esky を使用してファイルを (標準) 形式でユーザーに配布したいのは私だけですか.dmg? 私は何が欠けていますか?