PB doble antislash

Preguntas sobre paquetes WAPT / Solicitudes y ayuda sobre paquetes WAPT.
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
Bloqueado
adaurg
Mensajes: 3
Inscripción: 8 de diciembre de 2016 - 10:39

8 de diciembre de 2016 - 11:31

Buen día,

En primer lugar, un enorme agradecimiento al equipo de desarrollo por esta fantástica solución que me hace la vida mucho más fácil ;)

Después de configurar la implementación de los paquetes clásicos.
Estoy abordando la creación de mis primeros paquetes… Lo siento, también soy un novato en Python :D

Estoy buscando instalar Qgis 2.14.9.
Instalar Qgis 2.14.9 no es un problema, EXCEPTO que primero tengo que desinstalar la versión anterior: 2.14.3 (que no se instaló con wapt, de lo contrario podría haber usado la función "conflictos" si entiendo correctamente)

Así que configuré esto:

Código: Seleccionar todo

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')
excepto que cuando lo ejecuto, aparecen barras invertidas dobles en la ruta del ejecutable de desinstalación agregado aunque el valor en el registro sea correcto.

Código: Seleccionar todo

FATAL ERROR : CalledProcessError: Command '([u'C:\\Program Files\\QGIS Essen\\Un
install-QGIS.exe', '/S'],)' returned non-zero exit status 1
Busqué en las publicaciones del foro pero no encontré nada :llorar:

¿Cuál es la manera de solucionar este problema?

Gracias por su ayuda
Denis
Avatar de usuario
htouvet
Experto en WAPT
Mensajes: 436
Inscripción: 16 de marzo de 2015 - 10:48
Contacto :

8 de diciembre de 2016 - 11:44

Las barras invertidas dobles son "normales"
Esta es la visualización del contenido de una cadena de caracteres con las barras invertidas "escapadas" (para que no se interpreten como caracteres de control)

El problema está en otra parte, probablemente un problema de 32/64 bits.
Wapt es un proceso de 32 bits. Por lo tanto, Windows cambia automáticamente C:\Archivos de programa\ a C:\Archivos de programa (x86)\

Por lo tanto, le sugiero que deshabilite la redirección automática de Windows 32/64 mediante la función de contexto "with disable_file_system_redirection():"

Código: Seleccionar todo

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

...
TI tranquila
adaurg
Mensajes: 3
Inscripción: 8 de diciembre de 2016 - 10:39

8 de diciembre de 2016 - 13:58

Gracias por la rápida respuesta.
Tomo nota de las barras invertidas dobles. :ups:

Efectivamente, QGIS 2.14.3 es de 64 bits.

Lo probé desactivando la redirección automática como se indicaba (gracias por el código).

Pero... el error persiste... ¿

Quizás pueda solucionar el problema con un archivo .bat (aunque no sea la solución más limpia)?
En ese caso, ¿debería colocar el archivo .bat en el mismo directorio que el archivo setup.py? ¿O en una carpeta compartida de la red?

Gracias,
Denis
Avatar de usuario
htouvet
Experto en WAPT
Mensajes: 436
Inscripción: 16 de marzo de 2015 - 10:48
Contacto :

8 de diciembre de 2016 - 14:47

Puedes inspirarte en:

Código: Seleccionar todo

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

TI tranquila
adaurg
Mensajes: 3
Inscripción: 8 de diciembre de 2016 - 10:39

13 de diciembre de 2016 - 22:40

Gracias por su ayuda

Eso me salvó...
Todavía necesito mejorar mis habilidades en Python... pero lo hice así

Código: Seleccionar todo

# -*- 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'))
Y funciona. :PAG

¿Estás planeando crear una sección especial para compartir archivos setup.py?

GRACIAS
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

14 de diciembre de 2016 - 22:31

Atención aquí:

Código: Seleccionar todo

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

Por lo tanto, no habrá un segundo intento

Necesitarías reemplazarlo con

Código: Seleccionar todo

def install():
    print('installation de Qgis 2.14.9')
    if isrunning('qgis-bin.exe'):
        error("Qgis est ouvert !!! GRRRR...")
  
Avatar de usuario
htouvet
Experto en WAPT
Mensajes: 436
Inscripción: 16 de marzo de 2015 - 10:48
Contacto :

15 de diciembre de 2016 - 8:13 AM

Además, especifique que las barras invertidas no deben interpretarse colocando una cadena sin formato 'r' antes de la ruta de la clave de registro.

'r'software\microsoft\windows\currentversion\uninstall'
TI tranquila
Bloqueado