o )a>@stdZddlZddlZddlZddlmZddlmZddlm Z ddl Tddl m Z ddl mZGd d d eZdS) zzdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.N)Command) get_platform) remove_tree)*)get_python_version)logc seZdZdZddddefdddd d d d d dddg ZgdZejdkZ fddZ ddZ ddZ ddZ ddZd$ddZd d!Zd"d#ZZS)% 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)) keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)no-target-compilecz/do not compile .py to .pyc on the target system)no-target-optimizeoz;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) 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=Nzspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UAC)r r rrwin32cs$tj|i|tdtddS)Nz^bdist_wininst command is deprecated since Python 3.8, use bdist_wheel (wheel packages) instead)super__init__warningswarnDeprecationWarning)selfargskw __class__^/opt/alt/python310/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_wininst.pyr?szbdist_wininst.__init__cCsRd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)rr r r!initialize_optionsEs z bdist_wininst.initialize_optionscCs|dd|jdur)|jr|jr|jd}|j|_|dj}tj |d|_|j s/d|_ |jsL|j rLt }|j rI|j |krItd|f||_ |ddd|jrp|jjD]}|jtj |krhdSqZtd|jdS) Nbdist)r+r+ZwininstzMtarget 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)Zset_undefined_optionsr"r+r# distributionZget_command_objget_finalized_command bdist_baseospathjoinr'has_ext_modulesrZDistutilsOptionErrorr,scriptsbasename)rr0r4Z short_versionscriptr r r!finalize_optionsUsB      zbdist_wininst.finalize_optionsc Cstjdkr|js|jrtd|js|d|jddd}|j |_ |j|_d|_ |j |_ |d}d|_ d|_|jrm|j}|sV|jsMJd d tjdd }d |j |f}|d}tj|jd ||_dD]}|}|dkr}|d}t|d||qotd|j |tjdtj|j d|tjd=ddlm}|} |j } |j!| d|j d} |"| | |j#|jrt$} nd} |jj%&d| |'| ft(d| t)| |j*st+|j |j,ddSdS)Nrz^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstall)Zreinit_subcommandsr install_libz Should have already checked thisz%d.%drz.%s-%slib)ZpurelibZplatlibheadersr9datarBz/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzip)Zroot_diranyrzremoving temporary file '%s')dry_run)-sysplatformr2r8Zhas_c_librariesZDistutilsPlatformErrorr+Z run_commandZreinitialize_commandr"rootZwarn_dirr#compileoptimizer' version_infor3r5r6r7Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertrunZtempfilerD get_fullnameZ make_archive create_exer)rZ dist_filesappendget_installer_filenamedebugremover$rrG) rr>r@r'Zplat_specifierr=keyvaluerDZarchive_basenamefullnamearcnameZ pyversionr r r!rR{sv            zbdist_wininst.runc CsXg}|jj}|d|jpdd}dd}dD]!}t||d}|r9|d|||f}|d|||fq|d |jrJ|d |j|d |||d |j |d |j |j rp|d|j |j r{|d|j |j p|j }|d||ddl }ddl} d|| | jf} |d| d|S)Nz [metadata]r1 cSs |ddS)Nr]z\n)replace)sr r r!escapes z)bdist_wininst.get_inidata..escape)ZauthorZ author_email descriptionZ maintainerZmaintainer_emailnameurlversionz %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)r2metadatarUZlong_descriptiongetattr capitalizer,r%r&r'r.r*rStime distutilsctime __version__r7) rlinesrerPr`rbrCr*rhriZ build_infor r r! get_inidatas@    zbdist_wininst.get_inidataNc Csddl}||j|}||}|d||r:t|d }|}Wdn1s0wYt|} nd} t|d} | | |rP| |t |t rZ| d}|d}|jrt|jddd } |  d} Wdn1s{wY|| d }n|d}| ||d d t|| } | | t|d}| |Wdn1swYWddSWddS1swYdS) Nrz creating %srbwbmbcsrzlatin-1)encodings zs:         zbdist_wininst.get_exe_bytes)N)__name__ __module__ __qualname__rarZ user_optionsZboolean_optionsrHrIZ _unsupportedrr/r<rRrmrTrVry __classcell__r r rr!rs<%  &Q .7 r)__doc__r5rHrZdistutils.corerZdistutils.utilrZdistutils.dir_utilrZdistutils.errorsZdistutils.sysconfigrrirrr r r r!s