# -*- coding: utf-8 -*- import ponx,re,os,os.path,sys,time,string,urllib2 import win32com,win32api #directement : px_composants dico.py ce_script # relancer ponx.py si mis à jour # acf tps.cfg # idée : lancer qq chose AVANT et APRES chaque maj ; et en DEBUT/FIN # poss forcer à tout recharger GlobalPVersion="2.28" pox = ponx.ponx() #print dir(pox) #print pox.PRun("retouridem('AZERTY-12345')") #print pox.PRun("vifi(str(123456789012345678901234567890*9876543210/123))") ppn = win32com.client.Dispatch('ponx.Mci') try: repertoirePonx=ppn.PRet("ponxdir()") except: repertoirePonx='' os.chdir(repertoirePonx) dircourant=os.getcwd() print print'Le répertoire de PONX est : ',repertoirePonx print'Le répertoire courant est : ',dircourant if dircourant.upper()!=repertoirePonx.upper(): print"Le répertoire PONX, et le répertoire courant sont différents." print"La mise à jour est abandonnée." sys.exit(1) print ponx.ponxdir() def rfileweb(adr, repenregistrement='C:\\', fichier=None): if not repenregistrement.endswith('\\'): repenregistrement+='\\' page = urllib2.urlopen(adr).read() list = string.split(adr,'/') if fichier is None: nomlocal=list[-1] else: nomlocal=fichier if repenregistrement.startswith('.\\'): repenregistrement=repenregistrement[2:] if not os.path.isdir(os.getcwd()+'\\'+repenregistrement[:-1]) and repenregistrement!='': #print "os.mkdir",os.getcwd()+'\\'+repenregistrement os.mkdir(os.getcwd()+'\\'+repenregistrement) f = open(repenregistrement+nomlocal, "wb") f.write(page) f.close() return('\r\nFile \t'+repenregistrement+nomlocal+'\r\n from \t'+adr) def get_DLL_version_number(filename=None): from win32api import GetFileVersionInfo, LOWORD, HIWORD if filename is None: filename=GlobalPARAM[0] info = win32api.GetFileVersionInfo (filename, "\\") ms = info['FileVersionMS'] ls = info['FileVersionLS'] return str(win32api.HIWORD(ms))+'.'+str(win32api.LOWORD(ms))+'.'+str(win32api.HIWORD(ls))+'.'+str(win32api.LOWORD(ls)) def getversion(fic,rep): robj=re.compile(r'GlobalPVersion',re.IGNORECASE) rver=re.compile(r'''["'].*["']''',re.IGNORECASE) root,ext=os.path.splitext( fic) srep='' prep='' if rep.startswith('\\'): srep=rep+'\\' prep='.' if ext.upper() in (".EXE",".DLL"): try: v=get_DLL_version_number(prep+srep+fic) return v except: pass elif ext.upper()in (".PY",".PYW",".HTA",".BAT"): if not os.path.isfile(prep+srep+fic): return '1' ligs=open(prep+srep+fic).readlines() for l in ligs: r=robj.search(l) if r: d,f=r.span() v=rver.search(l) return v.group(0)[1:-1] try: statf=os.stat(prep+srep+fic) ver=time.strftime('%Y%m%d%H%M%S',time.localtime(statf[8])) except: ver='-1' return ver rfileweb('http://ponx.org/download/px_composants.py','.\\') rfileweb('http://ponx.org/download/ponxmajversions.py','.\\') import px_composants lco=px_composants.c for i in lco.keys(): #print i.ljust(22), d=lco.item(i) globaldatafichier=None version=getversion(d['fichier'],d['dir']) #print version,d['version'] if version!=d['version']: #print #print 123,i,version,d['version'] rrr=d['dir'] if rrr=='ponx': rep='' rrr='' else: rep=rrr if rep.startswith('.'): rep=rep[1:] rep=rep.replace('\\','/') rep+='/' rrr='.'+rrr if rrr!='': if not os.path.isdir(rrr): os.mkdir(rrr) if d.has_key('runbefore'): print d['runbefore'] bufferdir=os.getcwd() if d.has_key('dir'): os.chdir(rrr) os.system(d['runbefore']) os.chdir(bufferdir) try: print rfileweb('http://ponx.org/download'+rep+d['fichier'],rrr) except: pass """ try: fcs=d['fcompl'] for fc in fcs: print rfileweb('http://ponx.org/download'+rep+fc,rrr) except: pass """ fcs=d['fcompl'] print 162,fcs for fc in fcs: print rfileweb('http://ponx.org/download'+rep+fc,rrr) if d.has_key('runafter'): print d['runafter'] bufferdir=os.getcwd() if d.has_key('dir'): os.chdir(rrr) os.system(d['runafter']) os.chdir(bufferdir)