PB doppio antitaglio

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Bloccato
adaurg
Messaggi: 3
Iscrizioni: 8 dicembre 2016 - 10:39

8 dicembre 2016 - 11:31

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
Avatar utente
htouvet
Esperto WAPT
Messaggi: 436
Registrazione: 16 marzo 2015 - 10:48
Contatto:

8 dicembre 2016 - 11:44

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)

...
Tranquillo IT
adaurg
Messaggi: 3
Iscrizioni: 8 dicembre 2016 - 10:39

8 dicembre 2016 - 13:58

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
Avatar utente
htouvet
Esperto WAPT
Messaggi: 436
Registrazione: 16 marzo 2015 - 10:48
Contatto:

8 dicembre 2016 - 14:47

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

Tranquillo IT
adaurg
Messaggi: 3
Iscrizioni: 8 dicembre 2016 - 10:39

13 dicembre 2016 - 22:40

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
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

14 dicembre 2016 - 22:31

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...")
  
Avatar utente
htouvet
Esperto WAPT
Messaggi: 436
Registrazione: 16 marzo 2015 - 10:48
Contatto:

15 dicembre 2016 - 8:13

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'
Tranquillo IT
Bloccato