Pagina 1 di 1

PB doppio antitaglio

Pubblicato: 8 dicembre 2016 - 11:31
di adaurg
Buongiorno,

Innanzitutto un enorme ringraziamento al team di sviluppo per questa fantastica soluzione che mi semplifica notevolmente la vita ;)

Dopo aver impostato la distribuzione dei pacchetti classici.
Sto affrontando la creazione dei miei primi pacchetti... Scusate, sono anche un principiante di Python :D

Vorrei installare Qgis 2.14.9.
Installare Qgis 2.14.9 non è un problema, TRANNE che prima devo disinstallare la versione precedente: la 2.14.3 (che non era installata con wapt, altrimenti avrei potuto usare la funzione "conflitti", se ho capito bene?)

Quindi ho impostato questo:

Codice: Seleziona tutto

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')
tranne per il fatto che quando lo eseguo ottengo doppie barre rovesciate nel percorso dell'eseguibile di disinstallazione aggiunto, nonostante il valore nel registro sia corretto.

Codice: Seleziona tutto

FATAL ERROR : CalledProcessError: Command '([u'C:\\Program Files\\QGIS Essen\\Un
install-QGIS.exe', '/S'],)' returned non-zero exit status 1
Ho cercato tra i post del forum ma non ho trovato nulla :gridare:

Qual è il modo per aggirare questo problema?

Grazie per l'aiuto
Denis

Re: Problema con la doppia barra rovesciata

Pubblicato: 8 dicembre 2016 - 11:44
di htouvet
Le doppie barre rovesciate sono "normali"
Questa è la visualizzazione del contenuto di una stringa di caratteri con le barre rovesciate "precedute" da un carattere di escape (in modo che non vengano interpretate come caratteri di controllo)

Il problema è altrove, molto probabilmente è un problema a 32/64 bit.
Wapt è un processo a 32 bit. Pertanto, C:\Programmi\ viene automaticamente modificato da Windows in C:\Programmi (x86)\

Ti suggerisco quindi di disattivare il reindirizzamento automatico di Windows 32/64 utilizzando la funzione di contesto "with disable_file_system_redirection():"

Codice: Seleziona tutto

..
    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)

...

Re: Problema con la doppia barra rovesciata

Pubblicato: 8 dicembre 2016 - 13:58
di adaurg
Grazie per la rapida risposta.
Ho preso nota delle doppie barre rovesciate. :oops:

In effetti, QGIS 2.14.3 è a 64 bit.

L'ho testato disabilitando il reindirizzamento automatico come indicato (grazie per il codice).

Ma... l'errore persiste...

Forse posso aggirare il problema con un file .bat (ma non è una soluzione molto elegante)?
​​In tal caso, dovrei posizionare il file .bat nella stessa directory del file setup.py? O su una condivisione di rete?

Grazie,
Denis

Re: Problema con la doppia barra rovesciata

Pubblicato: 8 dicembre 2016 - 14:47
di htouvet
Puoi trarre ispirazione da:

Codice: Seleziona tutto

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='')


Re: Problema con la doppia barra rovesciata

Pubblicato: 13 dicembre 2016 - 22:40
di adaurg
Grazie per l'aiuto

Questo mi ha salvato...
Devo ancora migliorare le mie competenze in Python... ma l'ho fatto in questo modo

Codice: Seleziona tutto

# -*- 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'))
E funziona. :P

Stai pensando di creare una sezione speciale per condividere i file setup.py?

GRAZIE

Re: Problema con la doppia barra rovesciata

Pubblicato: 14 dicembre 2016 - 22:31
di sfontenau
Attenzione qui:

Codice: Seleziona tutto

def install():
    print('installation de Qgis 2.14.9')
    if isrunning('qgis-bin.exe'):
        print("Qgis est ouvert !!! GRRRR...")
        quit()
  
Se qgis-bin.exe è aperto, si esce da qui

Non ci sarà quindi un secondo tentativo

Dovresti sostituirlo con

Codice: Seleziona tutto

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

Re: Problema con la doppia barra rovesciata

Pubblicato: 15 dicembre 2016 - 08:13
di htouvet
Inoltre, specificare che le barre rovesciate non devono essere interpretate inserendo una 'r' (stringa raw) prima del percorso della chiave di registro.

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