2017-05-13 9 views
0

私のpygameのアプリがcx_Freezeにmsiとしてコンパイルされた後、.exeファイルから完璧に動作しますが、私はデスクトップのショートカットから、それを実行すると、私はエラーを取得する:cx_Freeze - エラーデスクトップのショートカットから.exeファイルを実行するときに

enter image description here

ショートカットのターゲットが正しいか、サウンドファイルがすべて正しいディレクトリにある、私は両方.wav.oggファイルをしようとしたなどのビットレートを低減し、何も動いていないようにみえてきました。欲求不満なことは、ターゲットの場所を開いて.exeを手動で実行すると完全に動作するということです。私は、デスクトップのショートカット方法が原因でエラーが発生している理由を理解できません。

import sys 
import cx_Freeze 

base = None 
if sys.platform == "win32": 
    base = "Win32GUI" 

executables = [cx_Freeze.Executable(
    script="a_bit_racey.py", 
    base=base, 
    icon="car_icon.ico", 
    shortcutName="A bit Racey", 
    shortcutDir="DesktopFolder")] 

cx_Freeze.setup(
    name="A bit Racey", 
    options={"build_exe": {"packages": ["pygame"], 
          "include_files": ["racecar.png", "Crash.ogg", "Ecstasy_X.ogg", 
              "car_icon.ico"]}}, 
    executables=executables 
) 

私はMSIプロパティショートカットニーズをしないのです。私のsetup.pyファイルはここ

のですか?私は1週間これに固執してきた。

編集:私は非常に少ない応答を得ているとしてここでは、より良い説明するかもしれないスクリーンショットです:

enter image description here

cx_Freezeで作成されたデスクトップにショートカットが正しいターゲットの場所を持っている、とさえ思えます.exeファイルを実行しますが、エラーが発生します。それでも、ターゲットの場所を開いて.exeファイルをダブルクリックすると、完全に動作します。

+0

http://cx-freeze.readthedocs.io/en/latest/faq.html#data-files cx_Freezeのドキュメントが私に信じられるように見えるように、絶対パスがフード内で使用されていることを確認してください。明らかに '' include_files ''リストでは相対的なものです。 f(x)を見つけるdata_dirがありますか? – seanmus

+0

@seanmus:はい、ビルド設定スクリプトの一部として、すべてのデータファイルの名前が "include_files"ステートメントで正しく指定されています。私はあなたがf(x)の意味を知らない。あなたはそれについて詳述できますか? – JasonPy

+0

の「データファイルを使用する」セクションでは、docsで提供されているものに似た機能を持っていますか? – seanmus

答えて

1

cx-freeze.readthedocs.io/en/latest/faq.html#data-files

このcx_Freezeドキュメントを信じるように私をリードしているようだのように絶対パスは、ボンネットの下に使用されていることを確認してください。明らかに "include_files"リストでは、これらは相対的なものです。 data_dirの検索機能はありますか?ドキュメントで "データファイルの使用"セクションを見ない場合。

+0

追加情報: 'find_data_file'関数をメインの' .py'ファイル(セットアップファイルではありません)に入れてください。一番上に 'import os'を追加する必要があります。 最初に、ファイルパスの変数を宣言してください: 'racecar_path = find_data_file(" racecar ")。これは、ファイルをロードする必要がある各データファイルの関数を呼び出す方法の例です(音声ファイル、音楽、画像などに適用されます)。 png ")' と入力し、loadステートメントを 'car_img = pygame.imageに変更します。load(racecar_path) ' 各データファイルに対して同じ処理を行い、' .msi'ファイルをcx_Freezeでビルドした後、正しくインストールされて実行されます。 – JasonPy

関連する問題