ó {fc@s°dZdZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z ddlmZdd lmZd efd „ƒYZdS( szdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.s$Id$iÿÿÿÿN(tget_python_version(tCommand(t remove_tree(tDistutilsOptionErrortDistutilsPlatformError(tlog(t get_platformt bdist_wininstcBs¹eZdZd,dddeƒfdddd fd d+d d fd-d.d/d0d1d2d3d4d5g Zdd ddgZd$„Zd%„Zd&„Z d'„Z d+d(„Z d)„Z d*„Z RS(6s-create an executable installer for MS Windowss bdist-dir=s1temporary directory for creating the distributions plat-name=tps;platform name to embed in generated filenames (default: %s)s keep-temptks/keep the pseudo-installation tree around after s!creating the distribution archivestarget-version=s!require a specific python versions on the target systemsno-target-compiletcs/do not compile .py to .pyc on the target systemsno-target-optimizetos;do not compile .py to .pyo (optimized) on the target systems dist-dir=tds-directory to put final built distributions insbitmap=tbs>bitmap to use for the installer instead of python-powered logostitle=tts?title to display on the installer background instead of defaults skip-builds2skip rebuilding everything (for testing/debugging)sinstall-script=sUbasename of installation script to be run after installation or before deinstallationspre-install-script=s{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionsuser-access-control=sŠspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ dS(Ni(tNonet bdist_dirt plat_namet keep_temptno_target_compiletno_target_optimizettarget_versiontdist_dirtbitmapttitlet skip_buildtinstall_scripttpre_install_scripttuser_access_control(tself((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pytinitialize_options@s            cCsV|jdd ƒ|jdkr|jrR|jrR|jjdƒ}|j|_n|jdƒj}t j j |dƒ|_n|j s”d|_ n|j rí|jj ƒrítƒ}|j rá|j |krátd|f‚n||_ n|jdd d ƒ|jrRxF|jjD]%}|jt j j|ƒkrPqqWtd|j‚ndS( NtbdistRtwininsttsMtarget version can only be %s, or the '--skip-build' option must be specifiedRRs(install_script '%s' not found in scripts(RR(RR(RR(tset_undefined_optionsRRRRt distributiontget_command_objtget_finalized_commandt bdist_basetostpathtjoinRthas_ext_modulesRRRtscriptstbasename(RRR&t short_versiontscript((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pytfinalize_optionsRs4       c CsÇtjdkr<|jjƒs-|jjƒr<tdƒ‚n|jsU|jdƒn|jdddƒ}|j |_ |j|_d|_ |j |_ |jdƒ}d|_ d|_|jjƒrB|j}|sþ|jsëtd ƒ‚tjdd !}nd |j |f}|jdƒ}tjj|jd |ƒ|_nxJdD]B}tj|ƒ}|dkrw|d}nt|d||ƒqIWtjd|j ƒ|jƒtjjdtjj|j dƒƒ|jƒtjd=ddl m!}|ƒ} |jj"ƒ} |j#| dd|j ƒ} |j$| | |j%ƒ|jjƒrYt&ƒ} nd} |jj'j(d| |j)| ƒfƒtj*d| ƒtj+| ƒ|j,sÃt-|j d|j.ƒndS(Ntwin32s^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformtbuildtinstalltreinit_subcommandsiit install_libs Should have already checked thisis.%s-%stlibtpurelibtplatlibtheadersR+tdatas/Include/$dist_nametinstall_sinstalling to %stPURELIBiÿÿÿÿ(tmktemptziptroot_dirtanyRsremoving temporary file '%s'tdry_run(R6R7R8R+R9(/tsystplatformR#R*thas_c_librariesRRt run_commandtreinitialize_commandRtroottwarn_dirRtcompiletoptimizeRtAssertionErrortversionR%R'R(R)t build_baset build_libtstringtuppertsetattrRtinfotensure_finalizedtinserttrunttempfileR<t get_fullnamet make_archivet create_exeRRt dist_filestappendtget_installer_filenametdebugtremoveRRR@( RR2R4Rtplat_specifierR1tkeytvalueR<tarchive_basenametfullnametarcnamet pyversion((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyRTzsf              %       c Cs÷g}|jj}|jdƒ|jp+dd}d„}xddddd d d d gD]a}t||dƒ}|rZ|d tj|ƒ||ƒf}|jd|||ƒfƒqZqZW|jdƒ|jrì|jd|jƒn|jd||ƒƒ|jd|j ƒ|jd|j ƒ|j rM|jd|j ƒn|j rm|jd|j ƒn|j p‚|jj ƒ}|jd||ƒƒddl}ddl} d|j|jƒƒ| jf} |jd| ƒtj|dƒS(Ns [metadata]R!s cSstj|ddƒS(Ns s\n(RNtreplace(ts((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pytescapeÛstauthort author_emailt descriptiont maintainertmaintainer_emailtnameturlRKs %s: %ss%s=%ss [Setup]sinstall_script=%ssinfo=%sstarget_compile=%dstarget_optimize=%dstarget_version=%ssuser_access_control=%sstitle=%siÿÿÿÿsBuilt %s with distutils-%ss build_info=%s(R#tmetadataRZtlong_descriptiontgetattrRNt capitalizeRRRRRRRVttimet distutilstctimet __version__R)( RtlinesRoRQRgRmR9RRsRtt build_info((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyt get_inidataÍs<   $      c Cs‹ddl}|j|jƒ|jƒ}|j|ƒ}|jd|ƒ|rrt|dƒjƒ}t|ƒ}nd}t|dƒ} | j |j ƒƒ|r°| j |ƒnyt Wnt k rËn"Xt |t ƒrí|jdƒ}n|d}|jr)t|jdƒjƒ} || d }n |d}| j |ƒ|jd d t|ƒ|ƒ} | j | ƒ| j t|dƒjƒƒdS( Niÿÿÿÿs creating %strbitwbtmbcsstrs s           cCs`|jr7tjj|jd||j|jfƒ}n%tjj|jd||jfƒ}|S(Ns%s.%s-py%s.exes %s.%s.exe(RR'R(R)RR(RRbRŒ((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyR[5s cCsddlm}tƒ}|jrm|j|krm|j|krL|ƒ}qv|jdkrdd}qvd}n |ƒ}tjjtƒ}|jdkrº|jd dkrº|jd}nd }tjj |d ||fƒ}t |d ƒ}z|j ƒSWd|j ƒXdS( Niÿÿÿÿ(tget_build_versions2.4g@gffffff@R0itwinR!swininst-%.1f%s.exeRz( tdistutils.msvccompilerR’RRR'R(tdirnamet__file__RR)RR‚tclose(RR’t cur_versiontbvt directorytsfixtfilenametf((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyR…Cs$     "N(s bdist-dir=Ns1temporary directory for creating the distribution(sno-target-compileR s/do not compile .py to .pyc on the target system(sno-target-optimizeR s;do not compile .py to .pyo (optimized) on the target system(s dist-dir=R s-directory to put final built distributions in(sbitmap=R s>bitmap to use for the installer instead of python-powered logo(stitle=Rs?title to display on the installer background instead of default(s skip-buildNs2skip rebuilding everything (for testing/debugging)(sinstall-script=NsUbasename of installation script to be run after installation or before deinstallation(spre-install-script=Ns{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distribution(suser-access-control=NsŠspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UAC(t__name__t __module__RjRRt user_optionstboolean_optionsRR/RTRyRXR[R…(((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyRsN      ( S 1 7 (t__doc__t __revision__RAR'RNt sysconfigRtdistutils.coreRtdistutils.dir_utilRtdistutils.errorsRRRtRtdistutils.utilRR(((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyts