2013-06-25 3 views
3

cx_freeze를 사용하여 MSI에 패키지화하려고하는 PySide 응용 프로그램이 있습니다. MSI 설치 프로그램을 성공적으로 만들 수 있지만 패키지에 포함될 추가 모듈을 나열하는 방법을 찾는 데 문제가 있습니다. 여기 내 setup.py 스크립트입니다 :PySide 응용 프로그램 용 cx_freeze 및 bdist_msi를 사용하여 MSI 만들기

import sys 
from cx_Freeze import setup, Executable 

company_name = 'My Company Name' 
product_name = 'My Gui' 

bdist_msi_options = { 
    'upgrade_code': '{66620F3A-DC3A-11E2-B341-002219E9B01E}', 
    'add_to_path': False, 
    'initial_target_dir': r'[ProgramFilesFolder]\%s\%s' % (company_name, product_name), 
    # 'includes': ['atexit', 'PySide.QtNetwork'], # <-- this causes error 
    } 

# GUI applications require a different base on Windows 
base = None 
if sys.platform == 'win32': 
    base = 'Win32GUI' 

exe = Executable(script='MyGui.py', 
       base=base, 
       icon='MyGui.ico', 
       ) 

setup(name=product_name, 
     version='1.0.0', 
     description='blah', 
     executables=[exe], 
     options={'bdist_msi': bdist_msi_options}) 

내가 명령을 성공적으로

python setup.py bdist_msi 

를 사용하지만 PySide 애플리케이션을 포장하기위한 documentation에 따라 MSI를 만들 수 있습니다, 나는 모듈 atexitPySide.QtNetwork을 포함해야합니다. 나는 bdist_msi_options'includes' 키를 추가하여이 작업을 수행하려고했으나 그 라인을 주석을 해제하면 다음과 같은 오류가 발생합니다

running bdist_msi 
error: error in setup script: command 'bdist_msi' has no such option 'includes' 

가 어떻게 그 모듈은 생성 된 실행 파일과 함께 포함되어야합니까를?

답변

4

동일한 질문을 cx-freeze 메일 링리스트에 게시하고 an answer을 받았습니다.

'includes' 및옵션은 'build_exe' 명령 용이므로 설정 호출에 두 명령을 모두 포함시켜야합니다.

bdist_msi_options = { 
    'upgrade_code': '{66620F3A-DC3A-11E2-B341-002219E9B01E}', 
    'add_to_path': False, 
    'initial_target_dir': r'[ProgramFilesFolder]\%s\%s' % (company_name, product_name), 
    } 

build_exe_options = { 
    'includes': ['atexit', 'PySide.QtNetwork'], 
    } 

... 

setup(name=product_name, 
     version='1.0.0', 
     description='blah', 
     executables=[exe], 
     options={ 
      'bdist_msi': bdist_msi_options, 
      'build_exe': build_exe_options})