ó ’,bc@sÀdZdZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z ddl mZdd lmZdd 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(tDistutilsFileError(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=sTbasename of installation script to be run afterinstallation 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((s5/usr/lib/python2.7/distutils/command/bdist_wininst.pytinitialize_optionsAs            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(RR R't short_versiontscript((s5/usr/lib/python2.7/distutils/command/bdist_wininst.pytfinalize_optionsSs4       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(R7R8R9R,R:(/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_filenametdebugtremoveRRRA( RR3R5Rtplat_specifierR2tkeytvalueR=tarchive_basenametfullnametarcnamet pyversion((s5/usr/lib/python2.7/distutils/command/bdist_wininst.pyRU{sf              %       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(ROtreplace(ts((s5/usr/lib/python2.7/distutils/command/bdist_wininst.pytescapeÜstauthort author_emailt descriptiont maintainertmaintainer_emailtnameturlRLs %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$tmetadataR[tlong_descriptiontgetattrROt capitalizeRRRRRRRWttimet distutilstctimet __version__R*( RtlinesRpRRRhRnR:RRtRut build_info((s5/usr/lib/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(RRcR((s5/usr/lib/python2.7/distutils/command/bdist_wininst.pyR\6s c Cs?ddlm}tƒ}|jrm|j|krm|j|krL|ƒ}qv|jdkrdd}qvd}n |ƒ}tjjtƒ}|jdkrº|jd dkrº|jd}nd }tjj |d ||fƒ}yt |d ƒ}Wn*t k r}t t |ƒd |‚nXz|jƒSWd|jƒXdS( Niÿÿÿÿ(tget_build_versions2.4g@gffffff@R1itwinR"swininst-%.1f%s.exeR{s), %s not included in the Debian packages.(tdistutils.msvccompilerR“RRR(R)tdirnamet__file__RR*R‚tIOErrorRtstrRƒtclose( RR“t cur_versiontbvt directorytsfixtfilenametftmsg((s5/usr/lib/python2.7/distutils/command/bdist_wininst.pyR†Ds*     "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=Rs>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=NsTbasename of installation script to be run afterinstallation 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__RkRRt user_optionstboolean_optionsRR0RURzRYR\R†(((s5/usr/lib/python2.7/distutils/command/bdist_wininst.pyRsN      ( S 1 7 (t__doc__t __revision__RBR(ROt sysconfigRtdistutils.coreRtdistutils.dir_utilRtdistutils.errorsRRRRuRtdistutils.utilRR(((s5/usr/lib/python2.7/distutils/command/bdist_wininst.pyts