Guten Morgen,
Vielen Dank für Ihre Hilfe. Ich kann die Datei setup.py nur im Ordner WAPT\WAPTUPGRADE finden.
Ich habe keine Dateien mit diesem Namen direkt im WAPT-Verzeichnis
Ich hänge ein Bild der .py-Dateien in meinem wapt-Ordner an
Ich füge den Inhalt der setup.py-Datei bei, da ich sie nicht als Anhang einfügen kann
Ich danke Ihnen für Ihre Hilfe
Knpc

- Inhalt des wapt-Ordners
- Dateierweiterung py.JPG (43,89 KB) 9187 Aufrufe
SETUP.PY-DATEI
# -*- coding: utf-8 -*-
import from setuphelpers *
import os
import _winreg
temporäre Datei importieren
Import-Shuttle
# Registrierungsschlüssel, in denen WAPT die Entfernung der Anwendung(en) ermittelt
uninstallkey = []
def update_sources():
Dateien = [
'common.py',
'setuphelpers.py',
'wapt-get.exe',
'wapt-get.exe.manifest',
'wapt-get.py',
'waptdevutils.py',
'waptpackage.py',
'windnsquery.py',
'wapttray.exe',
'waptexit.exe',
'keyfinder.py',
'COPYING.txt',
'Vorlagen',
'waptconsole.exe',
'waptconsole.exe.manifest',
'waptservice',
'Sprachen'
r'lib\site-packages\babel\__init__.py',
r'lib\site-packages\babel\_compat.py',
r'lib\site-packages\babel\core.py',
r'lib\site-packages\babel\global.dat',
r'lib\site-packages\babel\localtime',
r'lib\site-packages\babel\plural.py',
r'lib\site-packages\babel\localedata\en.dat',
r'lib\site-packages\babel\localedata\fr.dat',
r'lib\site-packages\babel\messages',
r'lib\site-packages\babel\support.py',
r'lib\site-packages\babel\compat.py',
r'lib\site-packages\babel\dates.py',
r'lib\site-packages\babel\localedata.py',
r'lib\site-packages\babel\numbers.py',
r'lib\site-packages\babel\util.py',
r'lib\site-packages\flask_babel',
r'lib\site-packages\pytz',
r'lib\site-packages\speaklater',
r'lib\site-packages\requests_kerberos_sspi',
r'lib\site-packages\lib\site-packages\flask_kerberos_sspi.py',
r'lib\site-packages\kerberos_sspi.py',
r'lib\site-packages\wapt.pth',
]
def ignore(src,names):
Ergebnis = []
für Name in Namen:
für Muster in ['*.pyc','*.exe']:
if glob.fnmatch.fnmatch(name,pattern):
result.append(name)
Rückgabeergebnis
checkout_dir = os.path.abspath(os.path.join(os.getcwd(),'..'))
# Verzeichnis für Aufräumpatches
if os.path.exists(os.path.join(checkout_dir,'waptupgrade','patches')):
Shutil.rmtree(os.path.join(checkout_dir,'waptupgrade','patches'))
os.makedirs(os.path.join(checkout_dir,'waptupgrade','patches'))
für f in Dateien:
fn = os.path.join(checkout_dir,f)
target_fn = os.path.join(checkout_dir,'waptupgrade','patches',f)
if os.path.isfile(fn):
if not os.path.exists(os.path.dirname(target_fn)):
os.makedirs(os.path.dirname(target_fn))
filecopyto(fn,target_fn)
elif os.path.isdir(fn):
copytree2(
src=fn,
dst=target_fn,
onreplace = default_overwrite,
ignorieren=ignorieren)
Rückgabewert: True
def update_control(entry):
"Aktualisiere die Paketsteuerungsdatei vor dem Build-Upload"
if update_sources():
waptget = get_file_properties(r'patches\wapt-get.exe')
rev = open('../version').read().strip()
entry.package = '%s-waptupgrade' % WAPT.config.get('global','default_package_prefix')
entry.version = '%s-%s' % (waptget['FileVersion'],rev)
anders:
print(u'Aktuelle Steuerungsdaten %s (%s) werden beibehalten'%(control.package,control.version))
def update_registry_version(version):
# Aktualisiere die Registry
mit _winreg.CreateKeyEx(HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WAPT_is1',\
0, _winreg.KEY_READ| _winreg.KEY_WRITE ) als waptis:
reg_setvalue(waptis,"DisplayName","WAPT %s" % version)
reg_setvalue(waptis,"DisplayVersion","WAPT %s" % version)
reg_setvalue(waptis,"InstallDate",currentdate())
def copytree2(src, dst, ignore=None, onreplace=default_skip, oncopy=default_oncopy, enable_replace_at_reboot=True, onerror=None):
Kopiere das Quellverzeichnis in das Zielverzeichnis. Das Zielverzeichnis wird erstellt, falls es noch nicht existiert
src kann relativ zum temporären Installationsverzeichnis sein
Die Methode `oncopy` wird für jeden Dateikopiervorgang aufgerufen. Wird `False` zurückgegeben, wird der Kopiervorgang übersprungen
onreplace wird aufgerufen, wenn eine Datei überschrieben werden soll.
"""
logger.debug('Kopiere Baum von "%s" nach "%s"' % (ensure_unicode(src),ensure_unicode(dst)))
# Pfad relativ zum temporären Verzeichnis...
tempdir = os.getcwd()
if not os.path.isdir(src) and os.path.isdir(os.path.join(tempdir,src)):
src = os.path.join(tempdir,src)
names = os.listdir(src)
if callable(ignore) and ignore is not None:
ignorierte_Namen = ignorieren(Quelle, Namen)
anders:
ignored_names = set()
if not os.path.isdir(dst):
if oncopy('create directory',src,dst):
os.makedirs(dst)
Fehler = []
für Name in Namen:
Falls der Name in ignored_names enthalten ist:
Fortsetzung
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
versuchen:
if os.path.isdir(srcname):
if oncopy('directory',srcname,dstname):
copytree2(srcname, dstname, ignore = ignore, onreplace=onreplace, oncopy=oncopy)
anders:
if os.path.isfile(dstname):
if onreplace(srcname,dstname) and oncopy('overwrites',srcname,dstname):
os.unlink(dstname)
Shutil.copy2(srcname, dstname)
anders:
if oncopy('copy',srcname,dstname):
Shutil.copy2(srcname, dstname)
außer (IOError, os.error) als warum:
#print(u'IO-Fehler beim Kopieren von "%s" nach "%s": %s' % (ensure_unicode(src),ensure_unicode(dst),ensure_unicode(why)))
if onerror is not None and callable(onerror):
versuchen:
onerror(srcname,dstname,why)
außer Ausnahme als e:
errors.append((srcname,dstname,ensure_unicode(e)))
anders:
errors.append((srcname,dstname,ensure_unicode(why)))
# Den Fehler des rekursiven Kopierbaums abfangen, damit wir
# Mit anderen Dateien fortfahren
außer shutil.Error als err:
logger.critical(u'shutil Fehler beim Kopieren von "%s" nach "%s": %s' % (ensure_unicode(srcname),ensure_unicode(dstname),ensure_unicode(err)))
errors.extend(err.args[0])
versuchen:
shutil.copystat(src, dst)
Außer bei OSError, warum?
if WindowsError is not None and isinstance(why, WindowsError):
Das Kopieren von Dateizugriffszeiten kann unter Windows fehlschlagen
passieren
anders:
print(u'Fehler beim Kopieren der Statistiken von "%s" nach "%s": %s' % (ensure_unicode(src),ensure_unicode(dst),ensure_unicode(why)))
errors.append((src, dst, str(why)))
Falls Fehler auftreten:
raise shutil.Error, errors
def add_at_cmd(cmd,delay=1):
Datum und Uhrzeit importieren
at_time = (datetime.datetime.now() + datetime.timedelta(minutes=delay)).strftime('%H:%M:%S')
print(run('at %s "%s"'%(at_time,cmd)))
def install():
# wenn Sie die Schlüssel je nach Umgebung (win32/win64... Parameter) ändern möchten
print(u'Teilweises Upgrade des WAPT-Clients')
killalltasks('wapttray.exe')
killalltasks('waptconsole.exe')
def onerror(srcname,dstname,e):
print u"Error %s %s %s" %(srcname,dstname,ensure_unicode(e))
if e[0] == 5: # gesperrt
filecopyto(srcname,dstname+'.pending')
replace_at_next_reboot(None, dstname)
anders:
raise e
def check_exe_version(src,dst):
if os.path.splitext(dst)[1] in ('.exe','.dll'):
versuchen:
ov = get_file_properties(dst)['FileVersion']
nv = get_file_properties(src)['FileVersion']
return Version(ov)
außer:
Rückgabewert: True
anders:
Rückgabewert: True
copytree2('patches',WAPT.wapt_base_dir,
onreplace = check_exe_version,
onerror = onerror)
update_registry_version(control.version)
Der Neustart des Dienstes kann nicht vom Dienst durchgeführt werden...
if service_installed('waptservice') and service_is_running('waptservice'):
import requests,json
versuchen:
res = json.loads(requests.get('
http://127.0.0.1:8088/waptservicerestart.json').text)
außer:
tmp_bat = tempfile.NamedTemporaryFile(prefix='waptrestart',suffix='.cmd',mode='wt',delete=False)
tmp_bat.write('net stop waptservice\n')
tmp_bat.write('net start waptservice\n')
tmp_bat.write('del "%s"\n'%tmp_bat.name)
tmp_bat.close()
add_at_cmd(tmp_bat.name)
print(u'Upgrade abgeschlossen')