£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
     f<                 @   sp   d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	 ddl
T ddlmZ ddlmZ G d	d
 d
eZdS )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   e Zd ZdZdddde  fdddd	d
ddddddgZddddgZejdkZ	dd Z
dd Zdd Zdd Zd%dd Zd!d" Zd#d$ ZdS )&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)ztarget-version=Nz6require a specific python version on the target system)zno-target-compilecz/do not compile .py to .pyc on the target system)zno-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)zbitmap=bz>bitmap to use for the installer instead of python-powered logo)ztitle=tz?title to display on the installer background instead of default)z
skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-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)zuser-access-control=Nzspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACz	keep-tempzno-target-compilezno-target-optimizez
skip-buildwin32c             C   sR   d | _ d | _d| _d| _d| _d | _d | _d | _d | _d | _	d | _
d | _d | _d S )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    D/opt/alt/python37/lib64/python3.7/distutils/command/bdist_wininst.pyinitialize_options=   s    z bdist_wininst.initialize_optionsc             C   s   |  dd | jd krR| jr6| jr6| jd}| j|_| dj}tj	
|d| _| js^d| _| js| j rt }| jr| j|krtd|f || _|  ddd | jrx2| jjD ]}| jtj	|krP qW td| j d S )	Nbdist)r   r   Zwininst zMtarget version can only be %s, or the '--skip-build' option must be specified)r   r   )r   r   z(install_script '%s' not found in scripts)Zset_undefined_optionsr   r   r   distributionZget_command_objget_finalized_command
bdist_baseospathjoinr   has_ext_modulesr   ZDistutilsOptionErrorr   scriptsbasename)r   r#   r'   Zshort_versionscriptr    r    r!   finalize_optionsM   s4    

zbdist_wininst.finalize_optionsc             C   s  t jdkr&| j s| j r&td| js6| d | jddd}| j	|_
| j|_d|_| j|_| d}d|_d|_| j r| j}|s| jstd	d
t jd d  }d| j|f }| d}tj|jd| |_x4dD ],}| }|dkr|d }t|d| | qW td| j	 |  t jdtj| j	d |  t jd= ddlm } | }	| j! }
| j"|	d| j	d}| #||
| j$ | j rt% }nd}| jj&'d|| (|
f t)d| t*| | j+st,| j	| j-d d S )Nr   z^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstall   )Zreinit_subcommandsr   install_libz Should have already checked thisz%d.%d   z.%s-%slib)ZpurelibZplatlibheadersr,   datar6   z/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzip)Zroot_diranyr	   zremoving temporary file '%s')dry_run).sysplatformr%   r+   Zhas_c_librariesZDistutilsPlatformErrorr   Zrun_commandZreinitialize_commandr   rootZwarn_dirr   compileoptimizer   AssertionErrorversion_infor&   r(   r)   r*   Z
build_baseZ	build_libuppersetattrr   infoZensure_finalizedinsertrunZtempfiler8   get_fullnameZmake_archive
create_exer   r   Z
dist_filesappendget_installer_filenamedebugremover   r   r;   )r   r1   r3   r   Zplat_specifierr0   keyvaluer8   Zarchive_basenamefullnamearcnameZ	pyversionr    r    r!   rG   s   sf    












zbdist_wininst.runc             C   s^  g }| j j}|d |jpdd }dd }xJdD ]B}t||d}|r2|d| ||f  }|d|||f  q2W |d	 | jr|d
| j  |d||  |d| j   |d| j   | j	r|d| j	  | j
r|d| j
  | jp
| j  }|d||  dd l}dd l}	d|| |	jf }
|d|
  d|S )Nz
[metadata]r$   
c             S   s   |  ddS )NrR   z\n)replace)sr    r    r!   escape   s    z)bdist_wininst.get_inidata.<locals>.escape)ZauthorZauthor_emaildescriptionZ
maintainerZmaintainer_emailnameZurlversionz
    %s: %sz%s=%sz
[Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%sr   zBuilt %s with distutils-%szbuild_info=%s)r%   metadatarJ   Zlong_descriptiongetattr
capitalizer   r   r   r   r   r   rH   time	distutilsZctime__version__r*   )r   linesrY   rE   rU   rW   r7   r   r\   r]   Z
build_infor    r    r!   get_inidata   s:    


zbdist_wininst.get_inidataNc          	   C   s  dd l }| | j |  }| |}| d|  |rPt|d }t|}nd}t|d}	|		| 
  |rz|		| t|tr|d}|d }| jrt| jddd	}
|
 d}W d Q R X || d
 }n|d }|		| |ddt||}|		| |		t|d  d S )Nr   zcreating %srbwbmbcs    rzlatin-1)encodings   
 z<iiii{V4)structZmkpathr   r`   rK   Zannounceopenreadlenwriteget_exe_bytes
isinstancestrencoder   Zpack)r   rQ   rP   r   rg   Zcfgdatainstaller_nameZ
bitmapdataZ	bitmaplenfiler.   Zscript_dataheaderr    r    r!   rI      s:    








zbdist_wininst.create_exec             C   sD   | j r&tj| jd|| j| j f }ntj| jd|| jf }|S )Nz%s.%s-py%s.exez	%s.%s.exe)r   r(   r)   r*   r   r   )r   rP   rp   r    r    r!   rK   '  s    

z$bdist_wininst.get_installer_filenamec       	      C   s   t  }| jrl| j|k rl| jdk r&d}q| jdkr6d}q| jdkrFd}q| jdkrVd}q| jdkrfd	}qd
}n@yddlm} W n tk
r   d
}Y nX |dd }|d }tjt	}| j
dkr| j
d d dkr| j
dd  }nd}tj|d||f }t|d}z| S |  X d S )Nz2.4z6.0z7.1z2.5z8.0z3.2z9.0z3.4z10.0z14.0r   )CRT_ASSEMBLY_VERSION.z.0r      winr$   zwininst-%s%s.exera   )r   r   Zmsvcrtrs   ImportError	partitionr(   r)   dirname__file__r   r*   rh   ri   close)	r   Zcur_versionZbvrs   majorZ	directoryZsfixfilenamefr    r    r!   rl   4  s8    	






zbdist_wininst.get_exe_bytes)N)__name__
__module____qualname__rV   r   Zuser_optionsZboolean_optionsr<   r=   Z_unsupportedr"   r/   rG   r`   rI   rK   rl   r    r    r    r!   r	      s4   
&Q.
5r	   )__doc__r<   r(   Zdistutils.corer   Zdistutils.utilr   Zdistutils.dir_utilr   r   Zdistutils.errorsZdistutils.sysconfigr   r]   r   r	   r    r    r    r!   <module>   s   