Seite 1 von 1

PB doppelter Schnittschutz

Veröffentlicht: 8. Dez. 2016 - 11:31 Uhr
von adaurg
Guten Morgen,

Zuallererst ein herzliches Dankeschön an das Entwicklerteam für diese fantastische Lösung, die mir das Leben so viel einfacher macht ;)

Nach der Einrichtung der Bereitstellung der klassischen Pakete.
Ich bin gerade dabei, meine ersten Pakete zu erstellen… Entschuldigung, ich bin auch ein Python-Neuling :D

Ich möchte QGIS 2.14.9 installieren.
Die Installation von Qgis 2.14.9 ist kein Problem, außer dass ich zuerst die vorherige Version deinstallieren muss: eine 2.14.3 (die nicht mit wapt installiert wurde, sonst hätte ich die "Konflikt"-Funktion verwenden können, wenn ich das richtig verstehe?)

Also habe ich Folgendes eingerichtet:

Code: Alle auswählen

from setuphelpers import *

uninstallkey = ['QGIS 2.14']

def install():
    print('installation de Qgis 2.14.9')
    if isrunning('qgis-bin.exe'):
        print("Qgis est ouvert !!! GRRRR...")
        quit()

    print('desinstallation de Qgis 2.14.3')
    sofname = 'Qgis Essen'
    versionsoft = '2.14.3'
    uninstallkey = ['QGIS Essen']
    check_installed_soft = installed_softwares(sofname)
    if check_installed_soft:
        for uninstall in check_installed_soft:
            if Version(uninstall['version']) < Version(versionsoft):
                cmd = WAPT.uninstall_cmd(uninstall['key'])
                run(cmd)

    run(r'"QGIS-OSGeo4W-2.14.9-2-Setup-x86_64.exe" /S')
    remove_desktop_shortcut(r'GRASS GIS 7.0.4')
    remove_desktop_shortcut(r'GRASS GIS 7.0.5')
    remove_desktop_shortcut(r'OSGeo4W Shell')
    remove_tree(r'C:\Users\Public\Desktop\QGIS Essen')
    remove_tree(r'C:\Users\Public\Desktop\QGIS 2.14')
Mit der Ausnahme, dass beim Ausführen des Programms doppelte Backslashes im Pfad der Deinstallationsdatei hinzugefügt werden, obwohl der Wert in der Registrierung korrekt ist.

Code: Alle auswählen

FATAL ERROR : CalledProcessError: Command '([u'C:\\Program Files\\QGIS Essen\\Un
install-QGIS.exe', '/S'],)' returned non-zero exit status 1
Ich habe die Forenbeiträge durchsucht, aber nichts gefunden :weinen:

Wie lässt sich dieses Problem umgehen?

Ich danke Ihnen für Ihre Hilfe
Denis

Betreff: Problem mit doppeltem Backslash

Veröffentlicht: 8. Dez. 2016 - 11:44 Uhr
von htouvet
Doppelte Backslashes sind "normal"
Dies ist die Anzeige des Inhalts einer Zeichenkette, wobei die Backslashes "maskiert" sind (damit sie nicht als Steuerzeichen interpretiert werden)

Das Problem liegt woanders, höchstwahrscheinlich ein 32/64-Bit-Problem.
Wapt ist ein 32-Bit-Prozess. Daher wird C:\Program Files\ von Windows automatisch in C:\Program Files (x86)\ umbenannt

Ich schlage daher vor, dass Sie die automatische 32/64-Windows-Umleitung mithilfe der Kontextfunktion "with disable_file_system_redirection():" deaktivieren

Code: Alle auswählen

..
    if check_installed_soft:
        for uninstall in check_installed_soft:
            if Version(uninstall['version']) < Version(versionsoft):
                with disable_file_system_redirection():
                    cmd = WAPT.uninstall_cmd(uninstall['key'])
                    run(cmd)

...

Betreff: Problem mit doppeltem Backslash

Veröffentlicht: 8. Dez. 2016 - 13:58 Uhr
von adaurg
Vielen Dank für die schnelle Antwort.
Ich habe die doppelten Backslashes bemerkt. :Hoppla:

QGIS 2.14.3 ist tatsächlich 64-Bit.

Ich habe es getestet, indem ich die automatische Umleitung wie angegeben deaktiviert habe (vielen Dank für den Code).

Der Fehler besteht aber weiterhin.

Könnte ich das Problem vielleicht mit einer .bat-Datei umgehen (das ist aber nicht optimal)?
Sollte ich die .bat-Datei in diesem Fall im selben Verzeichnis wie die setup.py-Datei ablegen? Oder auf einer Netzwerkfreigabe?

Vielen Dank,
Denis

Betreff: Problem mit doppeltem Backslash

Veröffentlicht: 8. Dez. 2016 - 14:47 Uhr
von htouvet
Sie können sich von Folgendem inspirieren lassen:

Code: Alle auswählen

from setuphelpers import *
import glob,time
import regutil

uninstallkey = []

version = '2.16.2-3'
url = "http://qgis.org/downloads/QGIS-OSGeo4W-%s-Setup-x86.exe" % version
url64 = "http://qgis.org/downloads/QGIS-OSGeo4W-%s-Setup-x86_64.exe" % version
exe = "QGIS-OSGeo4W-%s-Setup-x86.exe" % version
exe64 = "QGIS-OSGeo4W-%s-Setup-x86_64.exe" % version

def install():
    with disable_file_system_redirection():
        #Remove Old Versions in Default Directory
        for uninstall in glob.glob(makepath(programfiles,'QGIS*','Uninstall-QGIS.exe')):
            run_notfatal('"%s" /S'%uninstall)
            time.sleep(30)

        if isdir(makepath(programfiles,'QGIS 2.16.2')):
            remove_tree(makepath(programfiles,'QGIS 2.16.2'))

        #Fix bug with QGIS thinking it is still installed
        registry_delete(HKEY_LOCAL_MACHINE,makepath('Software','QGIS 2.16.2'),None)

    if iswin64():
        install_exe_if_needed(exe64,'/S',key='QGIS 2.16',min_version='')
    else:
        install_exe_if_needed(exe,'/S',key='QGIS Wien',min_version='')


Betreff: Problem mit doppeltem Backslash

Veröffentlicht: 13. Dez. 2016 - 22:40 Uhr
von adaurg
Ich danke Ihnen für Ihre Hilfe

Das hat mich gerettet...
Ich muss meine Python-Kenntnisse noch verbessern... aber ich habe es so gemacht:

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *
import glob,time
import regutil

uninstallkey = ['QGIS 2.14']

def install():
    print('installation de Qgis 2.14.9')
    if isrunning('qgis-bin.exe'):
        print("Qgis est ouvert !!! GRRRR...")
        quit()

    print('desinstallation de Qgis 2.14.3')
    with disable_file_system_redirection():
        #Remove Old Versions in Default Directory
        for uninstall in glob.glob(makepath(programfiles,'QGIS*','Uninstall-QGIS.exe')):
            run_notfatal('"%s" /S'%uninstall)
            time.sleep(30)

        #Fix bug with QGIS thinking it is still installed
        registry_deletekey(HKEY_LOCAL_MACHINE,'software\microsoft\windows\currentversion\uninstall','QGIS Essen')
        registry_deletekey(HKEY_LOCAL_MACHINE,'software','QGIS Essen')


    run(r'"QGIS-OSGeo4W-2.14.9-2-Setup-x86_64.exe" /S')
    remove_desktop_shortcut(r'GRASS GIS 7.0.4')
    remove_desktop_shortcut(r'GRASS GIS 7.0.5')
    remove_desktop_shortcut(r'OSGeo4W Shell')
    remove_tree(r'C:\Users\Public\Desktop\QGIS Essen')
    remove_tree(r'C:\Users\Public\Desktop\QGIS 2.14')
    if isdir(makepath(programfiles,'QGIS Essen')):
            remove_tree(makepath(programfiles,'QGIS Essen'))
Und es funktioniert. :P

Planen Sie, einen speziellen Bereich zum Teilen von setup.py-Dateien zu erstellen?

DANKE

Betreff: Problem mit doppeltem Backslash

Veröffentlicht: 14. Dez. 2016 - 22:31 Uhr
von Sfonteneau
Achtung!

Code: Alle auswählen

def install():
    print('installation de Qgis 2.14.9')
    if isrunning('qgis-bin.exe'):
        print("Qgis est ouvert !!! GRRRR...")
        quit()
  
Sie beenden die Sitzung hier, falls qgis-bin.exe geöffnet ist

Es wird daher keinen zweiten Versuch geben

Sie müssten es ersetzen durch

Code: Alle auswählen

def install():
    print('installation de Qgis 2.14.9')
    if isrunning('qgis-bin.exe'):
        error("Qgis est ouvert !!! GRRRR...")
  

Betreff: Problem mit doppeltem Backslash

Veröffentlicht: 15. Dez. 2016 - 08:13 Uhr
von htouvet
Geben Sie außerdem an, dass Backslashes nicht interpretiert werden sollen, indem Sie ein 'r' (Rohzeichenfolge) vor den Pfad des Registrierungsschlüssels setzen.

'r'software\microsoft\windows\currentversion\uninstall'