Viewing File: /opt/alt/python38/lib64/python3.8/distutils/command/__pycache__/bdist_msi.cpython-38.opt-1.pyc

U

¡ê,a߉ã@sÀdZddlZddlZddlmZddlmZddlmZddl	m
Z
ddlmZddl
mZdd	lmZddlZdd
lmZmZmZddlmZmZmZmZGdd
„d
eƒZGdd„deƒZdS)z#
Implements the bdist_msi command.
éN)ÚCommand)Úremove_tree)Úget_python_version)Ú
StrictVersion)ÚDistutilsOptionError)Úget_platform)Úlog)ÚschemaÚsequenceÚtext)Ú	DirectoryÚFeatureÚDialogÚadd_datac@sFeZdZdZdd„Zdd„Zddd	„Zddd„Zddd„Zdd„Z	dS)ÚPyDialogz™Dialog class with a fixed layout: controls at the top, then a ruler,
    then a list of buttons: back, next, cancel. Optionally a bitmap at the
    left.cOs>tj|f|žŽ|jd}d|d}| dd||jd¡dS)zbDialog(database, name, x, y, w, h, attributes, title, first,
        default, cancel, bitmap=true)é$é˜iHZ
BottomLinerN)rÚ__init__ÚhÚlineÚw)ÚselfÚargsÚkwZrulerZbmwidth©rú@/opt/alt/python38/lib64/python3.8/distutils/command/bdist_msi.pyrs
zPyDialog.__init__c
Cs| ddddddd|¡dS)	z,Set the title text of the dialog at the top.ÚTitleéé
é@é<éz{\VerdanaBold10}%sN)r)rÚtitlerrrr"#sÿzPyDialog.titleÚBackéc
Cs,|r
d}nd}| |d|jddd|||¡S)z»Add a back button with a given title, the tab-next button,
        its name in the Control table, possibly initially disabled.

        Return the button, so that events can be associatedér$é´éé8é©Ú
pushbuttonr©rr"ÚnextÚnameÚactiveÚflagsrrrÚback*sz
PyDialog.backÚCancelc
Cs,|r
d}nd}| |d|jddd|||¡S)z½Add a cancel button with a given title, the tab-next button,
        its name in the Control table, possibly initially disabled.

        Return the button, so that events can be associatedr%r$i0r'r(r)r*r,rrrÚcancel5szPyDialog.cancelÚNextc
Cs,|r
d}nd}| |d|jddd|||¡S)z»Add a Next button with a given title, the tab-next button,
        its name in the Control table, possibly initially disabled.

        Return the button, so that events can be associatedr%r$éìr'r(r)r*r,rrrr-@sz
PyDialog.nextc
Cs,| |t|j|dƒ|jdddd||¡S)zêAdd a button with a given title, the tab-next button,
        its name in the Control table, giving its x position; the
        y-position is aligned with the other buttons.

        Return the button, so that events can be associatedér'r(r)r%)r+Úintrr)rr.r"r-ZxposrrrÚxbuttonKszPyDialog.xbuttonN)r#r$)r2r$)r4r$)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__rr"r1r3r-r8rrrrrs



rc@s°eZdZdZddddeƒfdddd	d
ddd
g
ZddddgZddddddddddddddd d!d"d#d$d%gZd&Zd'd(„Z	d)d*„Z
d+d,„Zd-d.„Zd/d0„Z
d1d2„Zd3d4„Zd5d6„Zd7S)8Ú	bdist_msiz7create a Microsoft Installer (.msi) binary distribution)z
bdist-dir=Nz1temporary directory for creating the distributionz
plat-name=Úpz;platform name to embed in generated filenames (default: %s))ú	keep-tempÚkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)úno-target-compileÚcz/do not compile .py to .pyc on the target system)ú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)ú
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 distributionr?rArCrFz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9ÚXcCsFd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_	d|_
dS)Nr)Ú	bdist_dirÚ	plat_nameÚ	keep_tempZno_target_compileZno_target_optimizeÚtarget_versionÚdist_dirÚ
skip_buildÚinstall_scriptÚpre_install_scriptÚversions)rrrrÚinitialize_options}szbdist_msi.initialize_optionscCsò| dd¡|jdkr2| d¡j}tj |d¡|_tƒ}|jsN|j	 
¡rN||_|jrˆ|jg|_|js”|j	 
¡r”|j|kr”t
d|fƒ‚nt|jƒ|_| ddd¡|jr°t
dƒ‚|jrè|j	jD]}|jtj |¡kr¾qèq¾t
d|jƒ‚d|_dS)	NZbdist)rMrMZmsizMtarget version can only be %s, or the '--skip-build' option must be specified)rLrL)rIrIz5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)Zset_undefined_optionsrHÚget_finalized_commandÚ
bdist_baseÚosÚpathÚjoinrrKÚdistributionÚhas_ext_modulesrPrMrÚlistÚall_versionsrOrNZscriptsÚbasenameÚinstall_script_key)rrSZ
short_versionZscriptrrrÚfinalize_optionsŠsH

ÿÿÿþÿÿÿzbdist_msi.finalize_optionscCsz|js| d¡|jddd}|j|_|j|_d|_| d¡}d|_d|_|j 	¡rž|j
}|spdtjdd…}d	|j
|f}| d¡}tj |jd
|¡|_t d|j¡| ¡tj dtj |jd¡¡| ¡tjd=| |j¡|j ¡}| |¡}tj |¡}tj |¡r"t |¡|jj }|j!}	|	s<|j"}	|	sFd
}	| #¡}
dt$|
ƒj%}|j ¡}|j
r~d|j
|f}nd|}t& '|t(|t& )¡||	¡|_*t& +|j*t,¡d|
fg}
|j-pÄ|j.}|rÚ|
 /d|f¡|j0rò|
 /d|j0f¡|
rt1|j*d|
ƒ| 2¡| 3¡| 4¡| 5¡|j* 6¡t7|jdƒr^d|j
pJd|f}|jj8 /|¡|j9svt:|j|j;ddS)NÚbuildÚinstallr$)Zreinit_subcommandsrÚinstall_libz%d.%déz.%s-%sÚlibzinstalling to %sZPURELIBZUNKNOWNz%d.%d.%dzPython %s %sz	Python %sZDistVersionZ
ARPCONTACTZARPURLINFOABOUTÚPropertyÚ
dist_filesr=Úany)Údry_run)<rMZrun_commandZreinitialize_commandrHÚprefixZwarn_dirÚcompileÚoptimizerWrXrKÚsysÚversion_inforIrRrTrUrVZ
build_baseZ	build_librÚinfoZensure_finalizedÚinsertÚrunZmkpathrLÚget_fullnameÚget_installer_filenameÚabspathÚexistsÚunlinkÚmetadataÚauthorZ
maintainerZget_versionrÚversionÚmsilibZ
init_databaser	Zgen_uuidÚdbZ
add_tablesr
Zauthor_emailZmaintainer_emailÚappendZurlrÚadd_find_pythonÚ	add_filesÚadd_scriptsÚadd_uiÚCommitÚhasattrrdrJrrf)rr_r`rKZplat_specifierr^ÚfullnameÚinstaller_namertrurvZsversionZproduct_nameZpropsZemailÚtuprrrrn²s„




ÿ



þ

z
bdist_msi.runc
Cs|j}t d¡}tj |j¡}t||d|ddƒ}t|ddddddd}||d	fg}|j	|j
gD]t}d|}d|}	}
d}||j
krd
}d}
nd|}d}
t||	||d|
|d}t||||||
ƒ}| |||f¡q`| ¡i}|D]\}}}|g}|rü| 
¡}t |j¡D]æ}tj |j|¡}tj |¡rld
| |¡|f}||}
t|||||
|ƒ}| |¡nŠ|js„| |j|d¡||krÌ| |¡}||<||jkrö|jrÀtd|ƒ‚d||_n*||}t|jd|||j|d|jfgƒqqø| ¡qæ| |¡dS)NZ	distfilesÚ	TARGETDIRZ	SourceDirÚPythonZ
Everythingrr$)Z	directoryÚzPython from another locationrazPython %s from registryz%s|%szMultiple files with name %sz[#%s]Z
DuplicateFile)rxrwZCABrTrUrqrHrr
rPÚ
other_versionryr~ÚpopÚlistdirZabsoluterVÚisdirZ
make_shortZ	componentZstart_componentZlogicalZadd_filerNr\rrZcommit)rrxZcabZrootdirÚrootÚfÚitemsrvÚtargetr.ÚdefaultZdescr"ÚlevelÚdirÚseenZfeatureZtodoÚfileZafileZshortZnewdirÚkeyrrrr{
sf

ÿ

ÿÿ

zbdist_msi.add_filescCs|d}|jD]j}d|}d|}d|}d|}d|}d|}d|}	d	|}
d
|}d|}tjrld}
nd
}
t|jd|d
|d|
f|d|d|
fgƒt|jd||f||fgƒt|jd|d|d|df|	d|d|df|
d|d|dfgƒt|jd|||f|	||df|
d|d
fgƒt|jd|||f|	||df|
d|d
fgƒt|jdd|dd|fgƒ|d7}q
dS)asAdds code to the installer to compute the location of Python.

        Properties PYTHON.MACHINE.X.Y and PYTHON.USER.X.Y will be set from the
        registry for each version of Python.

        Properties TARGETDIRX.Y will be set from PYTHON.USER.X.Y if defined,
        else from PYTHON.MACHINE.X.Y.

        Properties PYTHONX.Y will be set to TARGETDIRX.Y\python.exei’z)SOFTWARE\Python\PythonCore\%s\InstallPathzpython.machine.zpython.user.zPYTHON.MACHINE.zPYTHON.USER.ZPythonFromMachineZPythonFromUserZ	PythonExerƒÚPYTHONéraZ
RegLocatorNr$Z	AppSearchÚCustomActioni3ú[ú]z]\python.exeÚInstallExecuteSequenceÚInstallUISequenceZ	Conditionr„rz
NOT TARGETDIRé)rPrwZWin64rrx)rÚstartÚverZinstall_pathZmachine_regZuser_regZmachine_propZ	user_propZmachine_actionZuser_actionZ
exe_actionZtarget_dir_propÚexe_propZTyperrrrzCs`ÿÿÿÿþÿþÿþÿÿzbdist_msi.add_find_pythonc
Cs|jrjd}|j|jgD]P}d|}d|}t|jd|d||jfgƒt|jd|d||fgƒ|d7}q|jrþtj 	|j
d	¡}t|d
ƒ4}| d¡t|jƒ}| | 
¡¡W5QRXW5QRXt|jdd
t |¡fgƒt|jddgƒt|jddgƒdS)Nizinstall_script.r”r–é2r™z&Python%s=3r$zpreinstall.batrzrem ="""
%1 %0
exit
"""
ÚBinaryÚ
PreInstall)r¡rar¡N)r¡z
NOT InstallediÂ)rNrPr†rrxr\rOrTrUrVrHÚopenÚwriteÚreadrwr )rrœrZinstall_actionržZscriptfnr‹Zfinrrrr|ys6ÿÿ
	
"ÿÿÿzbdist_msi.add_scriptscCsÈ
|j}d}}d}d}d}d}d}d}	t|dd	d
ddd
dgƒt|dddddgƒt|ddddddgƒt|dtjƒt|dtjƒt|d||||||dddƒ}
|
 d¡|
jddd d!|
jd"d#d d!|
 d$d%d&d'd(d)d*¡|
 d+d%d,d'd-d)d.¡|
j	dd"dd/}| 
d0d1¡t|d2||||||dddƒ}| d3¡|jddd d!|jd"d#d d!| d$d%d&d'd(d)d4¡| d+d%d,d'd-d)d.¡|j	dd"dd/}| 
d0d1¡t|d5||||||dddƒ}
|
 d6¡|
jddd d!|
jd"d#d d!|
 d7d%d8d'd-d)d.¡|
j	dd"dd/}| 
d0d9¡t|d:||||d;|d<d<d<d=d>}| d?d%d@dAd%d)dB¡| d7d-dCdDd-d)dE¡| dFd-dGdHdddI¡| dJdKd-dLdHdMdNdOddd¡|jd1dPd1d/}| 
d0d1¡|j	dPd<dPd/}| 
d0dP¡|jd<d1d<d/}| 
d0d<¡t|dQddRdHdSdT|dUddƒ}| dUddVdDdWddX¡| 
dYdZd[d\d]dd^d¡ 
d0d_¡| 
d`dad[d\d]ddbd¡ 
d0dc¡| 
ddd d[d\d]dded¡ 
d0df¡| 
dgdhd[d\d]dd"d¡ 
d0di¡| 
djd\d[d\d]ddPd¡ 
d0dk¡| 
dldmd[d\d]ddnd¡ 
d0do¡| 
dpdqd[d\d]dd<d¡ 
d0dr¡t|dsddRdtdud|d^d^d^ƒ}| dFdWd%dvdwddx¡| 
dbd[dydzd{ddbd^¡}| 
d0d1¡| 
d^d|dydzd{dd^db¡}| 
d0d9¡t|d}ddRdtdu||d9d9d9ƒ}| dFdWd%dvdwdd~¡| 
d9ddydzd{dd9d¡}| 
d0d1¡t|d€||||||d"d"d"ƒ}| d7d%d&d'dd)d‚¡| dƒ¡| dd%d„d'd-d)d…¡}| ddF¡| d†d%d‡d'dwd)d¡}| d†dF¡|jd#dd d!|j	dˆdd d!| d"d¡}| 
d‰ds¡t|dŠ||||||dˆdˆd"ƒ}| d‹¡| dŒd%dwdd-dd|j ¡¡|jddd d!| 	dŽd"¡}d}|j
dd|d‘|j|jgD](}|d7}|j
dd’|d“||d‘q
|j
d”d}|dd‘|j
d0d9|d•d‘| d"d–¡}| 
d‰ds¡| d–d—d%d˜ddZdd™ddšd¡}| 
d›dœ¡|j}d“|}d|}| džd%dAdd%ddŸ¡}| d |¡| d¡|¡| d¢|¡| d£|¡| dšdšd%d¤dd¥dd¦|ddˆd¡}| d |¡| d¡|¡| d¢|¡| d£|¡t|d§||||||d¨d¨d¨d=d>}| d?d%d@dAd%d)d©¡| d7d-d-dDd-d)dª¡| dFd-d«dHd˜dd¬¡| d­d®d-d¯dHd°d±dd²dd¡| d¨dndd³¡ 
d0d9¡t|d´||||||dµdˆd"ƒ}| d¶¡| dµd%d˜dtddd·dXdˆ¡	}| d¸d d¹d°d-dº¡| d»d d¼d°d-d½¡|jd#dd d!| 	dŽd"¡}| 
d¾dœd¿d¡|j
d0d9d•d‘| d"dµ¡}| 
d‰ds¡t|dÀ||||||d"d"d"d=d>}| d?d-d%dAd%d)dÁ¡| dFdÂdÃddwddÄ¡| dÅdÂd¯dÂd-ddÆ¡| dd&d¯|d&d-dd…¡}| ddF¡| dÇdÇdÂdZddRdÈddÉdd¡}| dÊdË¡|jddˆd=d!|j	dŽd"d=d!| d"d#¡ 
d‰ds¡t|dÌ||||||dˆdˆd"ƒ}| dÍ¡| dÎd%dÏdHdhddС| dÑd%dÒdHd˜ddÓdXdˆ¡	}| dÔd dÕdAd{dÖ¡| d×d dØdAd{dÙ¡|jddd=d!| 	dd"¡}| 
dÚd¸dÛd¹¡| 
dÜdÝdÛd@¡| 
dÞdßdÛdN¡| 
dàd¸dÛdá¡| 
dâd¸dãdä¡| 
dÜdådãdæ¡| 
dÞdçdãdè¡| 
d×d¸dãdé¡| 
d0d9dêd-¡| d"dÑ¡ 
d‰ds¡dS)ëNrŸiri,z[ProductName] Setupr%r$é rc)Z
DefaultUIFontÚDlgFont8)ZErrorDialogÚErrorDlg)Z	Progress1ZInstall)Z	Progress2Zinstalls)ÚMaintenanceForm_ActionÚRepair)Ú
WhichUsersÚALLZ	TextStyle)r¦ÚTahomaé	Nr)ZDlgFontBold8r¬éNr$)Z
VerdanaBold10ÚVerdanarNr$)ZVerdanaRed9r¯r­éÿrrš)Ú
PrepareDlgz(Not Privileged or Windows9x or InstalledéŒ)Ú
WhichUsersDlgz.Privileged and not Windows9x and not Installedé)ÚSelectFeaturesDlgz
Not InstallediÎ)ÚMaintenanceTypeDlgz,Installed AND NOT RESUME AND NOT Preselectediâ)ÚProgressDlgNiÚ
ActionTextÚUITextZ
FatalErrorZFinishz)[ProductName] Installer ended prematurelyz< Backr)r/r2r#ZDescription1réFréPr!z«[ProductName] setup ended prematurely because of an error.  Your system has not been modified.  To install this program at a later time, please run the installation again.ZDescription2é›éz.Click the Finish button to exit the Installer.)r.Z	EndDialogZExitZUserExitz'[ProductName] Installer was interruptedz•[ProductName] setup was interrupted.  Your system has not been modified.  To install this program at a later time, please run the installation again.Z
ExitDialogz&Completing the [ProductName] InstallerZDescriptionéëZReturnZ
FilesInUseéZRetryF)ZbitmaprééÈz{\DlgFontBold8}Files in Useéiz8Some files that need to be updated are currently in use.ZTexté7iJz²The following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.ZListZListBoxéké‚éZFileInUseProcessÚIgnorer§réeiZ	ErrorTextr­é0r…ÚNéxéHéQéZNoZErrorNoÚYéðZYesZErrorYesÚAZAbortZ
ErrorAbortÚCé*ZErrorCancelÚIZErrorIgnoreÚOéŸZOkZErrorOkÚRéÆZ
ErrorRetryZ	CancelDlgiéUéÂéz;Are you sure you want to cancel [ProductName] installation?é9r(r)é„ZWaitForCostingDlgzRPlease wait while the installer finishes determining your disk space requirements.éfr±é(zOPlease wait while the Installer prepares to guide you through the installation.z&Welcome to the [ProductName] InstallerénzPondering...Z
ActionDataé‡r4ZSpawnDialogrµzSelect Python InstallationsZHintz9Select the Python locations where %s should be installed.zNext >z[TARGETDIR]z[SourceDir])Zorderingz
[TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialograZFeaturesZ
SelectionTreer ZFEATUREZPathEditz[FEATURE_SELECTED]Ú1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHideé×érƒZDiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.é5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features.  You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z
VolumeListZVolumeCostListédé–iz{120}{70}{70}{70}{70}gà?r³ZAdminInstallzGSelect whether to install [ProductName] for all users of this computer.rªr«ézInstall for all usersZJUSTMEézInstall just for mez
[ALLUSERS]zWhichUsers="ALL"r·z({\DlgFontBold8}[Progress1] [ProductName]é#éAzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.ZStatusLabelzStatus:ZProgressBariz
Progress doneZSetProgressZProgressr¶z)Welcome to the [ProductName] Setup WizardZBodyTexté?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGroupélr¨r©r•z&Repair [ProductName]ZRemoverzRe&move [ProductName]z[REINSTALL]zMaintenanceForm_Action="Repair"z[Progress1]Z	Repairingz[Progress2]ZrepairsZ	Reinstallr®z[REMOVE]zMaintenanceForm_Action="Remove"éZRemovingéZremovesé
éz MaintenanceForm_Action<>"Change")rxrrr¸r¹rr"r1r3r-ZeventZcontrolrr+ÚmappingrWrorPr†Z	conditionr8Z
radiogroupÚadd)rrxÚxÚyrrr"ZmodalZmodelessZtrack_disk_spaceZfatalrBZ	user_exitZexit_dialogZinuseÚerrorr3ZcostingZprepZseldlgÚorderrvrZinstall_other_condZdont_install_other_condZcostZ
whichusersÚgZprogressZmaintrrrr}Ÿsvùþ
ýÿ	ùÿ
ÿ
ÿÿÿ
ÿÿÿ
ÿüÿÿÿÿü       ÿÿÿÿÿÿ
ÿ
ÿÿþ
ÿÿÿÿÿÿÿÿ
ÿ
ÿÿÿÿÿÿ
ÿÿzbdist_msi.add_uicCs<|jrd||j|jf}nd||jf}tj |j|¡}|S)Nz%s.%s-py%s.msiz	%s.%s.msi)rKrIrTrUrVrL)rr€Z	base_namerrrrrpÝsÿz bdist_msi.get_installer_filenameN)r9r:r;ZdescriptionrZuser_optionsZboolean_optionsrZr†rQr]rnr{rzr|r}rprrrrr=Ss^ÿÿéÿ
ý
([66&@r=)r<rjrTZdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ	distutilsrrwr	r
rrr
rrrr=rrrrÚ<module>s>
Back to Directory File Manager