a DOg>@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__D/opt/alt/python39/lib64/python3.9/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_optionsEsz bdist_wininst.initialize_optionscCs|dd|jdurR|jr6|jr6|jd}|j|_|dj}tj |d|_|j s^d|_ |js|j rt }|j r|j |krtd|f||_ |ddd|jr|jjD]}|jtj |krqqtd|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_optionsUs>      zbdist_wininst.finalize_optionsc Cstjdkr&|js|jr&td|js6|d|jddd}|j |_ |j|_d|_ |j |_ |d}d|_ d|_|jr|j}|s|jsJd d tjdd }d |j |f}|d}tj|jd ||_dD],}|}|dkr|d}t|d||qtd|j |tjdtj|j d|tjd=ddlm}|} |j } |j!| d|j d} |"| | |j#|jrt$} nd} |jj%&d| |'| ft(d| t)| |j*st+|j |j,ddS)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{st            zbdist_wininst.runc CsZg}|jj}|d|jpdd}dd}dD]B}t||d}|r0|d|||f}|d|||fq0|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]r1 cSs |ddS)Nr]z\n)replace)sr r r!escapesz)bdist_wininst.get_inidata..escape)ZauthorZ author_email descriptionZ maintainerZmaintainer_emailnameZurlversionz %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) rlinesrdrPr`rbrCr*rgrhZ build_infor r r! get_inidatas>   zbdist_wininst.get_inidataNc Csddl}||j|}||}|d||rtt|d}|}Wdn1s`0Yt|} nd} t|d} | | |r| |t |t r| d}|d}|jrt|jddd } |  d} Wdn1s0Y|| d }n|d}| ||d d t|| } | | t|d}| |Wdn1sr0YWdn1s0YdS) Nrz creating %srbwbmbcsrzlatin-1)encodings zzd d lm}Wntyd }Yn0|d d }|d}tjt }|j dkr|j dddkr|j dd}nd}tj |d||f}t |d}z| W|S|0dS)Nz2.4z6.0z7.1z2.5z8.0z3.2z9.0z3.4z10.0z14.0r)CRT_ASSEMBLY_VERSION.z.0rwinr1zwininst-%s%s.exerm)rr'Zmsvcrtr ImportError partitionr5r6dirname__file__r#r7rtruclose) rZ cur_versionZbvrmajorZ directoryZsfixfilenamer}r r r!rx>s<          zbdist_wininst.get_exe_bytes)N)__name__ __module__ __qualname__rarZ user_optionsZboolean_optionsrHrIZ _unsupportedrr/r<rRrlrTrVrx __classcell__r r rr!rs:%  &Q. 7 r)__doc__r5rHrZdistutils.corerZdistutils.utilrZdistutils.dir_utilrZdistutils.errorsZdistutils.sysconfigrrhrrr r r r!s