B µÛÏTò¾âTã@spdZddlZddlZddlmZddlmZddlmZm Z ddl Tddl m Z ddl mZGd d „d eƒZdS) zzdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.éN)ÚCommand)Ú get_platform)Ú create_treeÚ remove_tree)Ú*)Úget_python_version)Úlogc @sŠeZdZdZddddeƒfdddd d d d d dddg ZddddgZejdkZ dd„Z dd„Z dd„Z dd„Z d%dd „Zd!d"„Zd#d$„ZdS)&Ú bdist_wininstz-create an executable installer for MS Windows)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=Úpz;platform name to embed in generated filenames (default: %s))z keep-tempÚkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)zno-target-compileÚcz/do not compile .py to .pyc on the target system)zno-target-optimizeÚoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=Údz-directory to put final built distributions in)zbitmap=Úbz>bitmap to use for the installer instead of python-powered logo)ztitle=Útz?title to display on the installer background instead of default)z skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distribution)zuser-access-control=NzŠspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACz keep-tempzno-target-compilezno-target-optimizez skip-buildÚwin32cCsRd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) Ú bdist_dirÚ plat_nameÚ keep_tempÚno_target_compileÚno_target_optimizeÚtarget_versionÚdist_dirÚbitmapÚtitleÚ skip_buildÚinstall_scriptÚpre_install_scriptÚuser_access_control)Úself©r úB/opt/alt/python37/lib/python3.7/distutils/command/bdist_wininst.pyÚinitialize_options=sz bdist_wininst.initialize_optionscCsä| dd¡|jdkrR|jr6|jr6|j d¡}|j|_| d¡j}tj   |d¡|_|j s^d|_ |js˜|j  ¡r˜t ƒ}|j r’|j |kr’td|fƒ‚||_ | ddd¡|jràx2|jjD]}|jtj  |¡kr¶Pq¶Wtd|jƒ‚dS) NÚbdist)rrZwininstÚzMtarget version can only be %s, or the '--skip-build' option must be specified)rr)rrz(install_script '%s' not found in scripts)Zset_undefined_optionsrrrÚ distributionZget_command_objÚget_finalized_commandÚ bdist_baseÚosÚpathÚjoinrÚhas_ext_modulesrZDistutilsOptionErrorrÚscriptsÚbasename)rr#r'Z short_versionÚscriptr r r!Úfinalize_optionsMs4      zbdist_wininst.finalize_optionsc Csätjdkr&|j ¡s|j ¡r&tdƒ‚|js6| d¡|jddd}|j |_ |j|_d|_ |j |_ | d¡}d|_ d|_|j ¡rÌ|j}|sžd tjdd …}d |j |f}| d¡}tj |jd |¡|_x4d D],}| ¡}|dkrî|d}t|d||ƒqÒWt d|j ¡| ¡tj dtj |j d¡¡| ¡tjd=ddlm}|ƒ} |j  ¡} |j!| d|j d} | "| | |j#¡|j ¡r”t$ƒ} nd} |jj% &d| | '| ¡f¡t (d| ¡t )| ¡|j*sàt+|j |j,ddS)Nrz^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformÚbuildÚinstallé)Zreinit_subcommandsrÚ install_libz%d.%déz.%s-%sÚlib)ZpurelibZplatlibÚheadersr,Údatar6z/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)ÚmktempÚzip)Zroot_dirÚanyr zremoving temporary file '%s')Údry_run)-ÚsysÚplatformr%r+Zhas_c_librariesZDistutilsPlatformErrorrZ run_commandZreinitialize_commandrÚrootZwarn_dirrÚcompileÚoptimizerÚ version_infor&r(r)r*Z build_baseZ build_libÚupperÚsetattrrÚinfoZensure_finalizedÚinsertÚrunZtempfiler8Ú get_fullnameZ make_archiveÚ create_exerrZ dist_filesÚappendÚget_installer_filenameÚdebugÚremoverrr;) rr1r3rZplat_specifierr0ÚkeyÚvaluer8Zarchive_basenameÚfullnameÚarcnameZ pyversionr r r!rFssd                  zbdist_wininst.runc Cs^g}|jj}| d¡|jpdd}dd„}xJdD]B}t||dƒ}|r2|d| ¡||ƒf}| d|||ƒf¡q2W| d ¡|jr˜| d |j¡| d ||ƒ¡| d |j ¡| d |j ¡|j rä| d|j ¡|j rú| d|j ¡|j p |j  ¡}| d||ƒ¡ddl }ddl} d| |  ¡¡| jf} | d| ¡d |¡S)Nz [metadata]r$Ú cSs | dd¡S)NrQz\n)Úreplace)Úsr r r!ÚescapeÑsz)bdist_wininst.get_inidata..escape)ZauthorZ author_emailÚ descriptionZ maintainerZmaintainer_emailÚnameZurlÚversionz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)r%ÚmetadatarIZlong_descriptionÚgetattrÚ capitalizerrrrrrrGÚtimeÚ distutilsZctimeÚ __version__r*) rÚlinesrXrDrTrVr7rr[r\Z build_infor r r!Ú get_inidataÄs:    zbdist_wininst.get_inidataNc Csddl}| |j¡| ¡}| |¡}| d|¡|rPt|dƒ ¡}t|ƒ}nd}t|dƒ} |   |  ¡¡|rz|   |¡t |t ƒrŽ|  d¡}|d}|jrÔt|jddd } |  ¡  d¡} WdQRX|| d }n|d}|   |¡| d d t|ƒ|¡} |   | ¡|   t|dƒ ¡¡dS) Nrz creating %sÚrbÚwbÚmbcsóÚrzlatin-1)Úencodings zs