Página 1 de 2

[RESUELTO] Error de implementación del paquete

Publicado: 23 de marzo de 2020 - 16:02
por Scud
Hola,
he configurado un servidor WAPT y estoy intentando desplegar un archivo .exe con parámetros enviados mediante Python.
Para ser más preciso, estoy desplegando owncloud.exe y he creado un código que rellena automáticamente un archivo .cfg para que los usuarios solo tengan que introducir sus contraseñas.
En la consola del servidor, todo funciona correctamente. Puedo instalar y desinstalar el programa. Genero el paquete sin problemas, PERO en cuanto lo implemento para un usuario, recibo un error.

Adjunto el mensaje de error y una captura de pantalla que muestra la versión de WAPT que estoy utilizando.
Mi servidor ejecuta Windows Server 2012 R2 Datacenter. Mi
máquina de administración es Windows 10 Pro.


Si necesitan que les proporcione mi código, no hay problema, pero quizás el mensaje de error les dé alguna pista sin abrumarlos con demasiada información.

Gracias de antemano.

Re: Error de implementación del paquete

Publicado: 24 de marzo de 2020 - 09:23
por sfonteneau
Hola,

nos falta el archivo setup.py. :(

¿Podrías también publicar el error (haz clic en la máquina con el error y luego en el paquete con el error)? El error del paquete se encuentra en el panel inferior derecho.

Re: Error de implementación del paquete

Publicado: 24 de marzo de 2020 - 12:13
por Scud
Hola,
gracias por tu respuesta.
Esta mañana modifiqué ligeramente mi código para usar la última versión de Owncloud (en formato .msi).
Ahora, la instalación y desinstalación funcionan, pero no se aplican mis ajustes. Creo que me da un error de codificación, aunque mi entorno y mi configuración están correctamente configurados en UTF-8.

Adjunto setup.py
(y acabo de añadir el mensaje de error como un archivo .csv).

El objetivo de mi script es rellenar previamente la información solicitada tras la instalación de Owncloud:
el nombre de usuario, la ruta de almacenamiento local y escribir todo en un archivo .cfg en una carpeta de Windows.

Localmente, usando Python con las funciones install y remove, funciona. Pero cuando lo ejecuto en otra máquina (virtual por ahora), mi script no parece ejecutarse.

Gracias por tu ayuda.

Re: Error de implementación del paquete

Publicado: 24 de marzo de 2020 - 16:07
por sfonteneau
Cuando desee interactuar con el entorno del usuario, debe utilizar session_setup:

https://www.wapt.fr/fr/doc/wapt-create- ... index.html

He reelaborado un poco tu código:

Código: Seleccionar todo

# -*- coding: utf-8 -*-
from setuphelpers import *
import os

uninstallkey = []

url_owncloud = 'https://cloud.test.fr'

def install():
    print('installing frej-owncloud')
    install_msi_if_needed('ownCloud-2.6.1.msi')

def session_setup():

    homeowncloud = makepath(os.environ.get('HOMEPATH'),'ownCloud')
    owncloud_appdata = makepath(application_data(),'ownCloud')
    fichiercfg = makepath(owncloud_appdata,'owncloud.cfg')

    mkdirs(homeowncloud)
    mkdirs(owncloud_appdata)

    inside_owncloud_file = r"""[General]
clientVersion=2.6.1 (build 12992)
confirmExternalStorage=false
newBigFolderSizeLimit=500
optionalDesktopNotifications=true
showInExplorerNavigationPane=true
useNewBigFolderSizeLimit=false

[Accounts]
version=2
0\Folders\1\localPath=c:/Users/%s/ownCloud
0\url=%s
0\http_user=%s
0\user=%s""" % (get_current_user(),url_owncloud,get_current_user(),get_current_user())

    with open(fichiercfg, "w") as fichier:
        fichier.write(inside_owncloud_file)

Re: Error de implementación del paquete

Publicado: 24 de marzo de 2020 - 17:08
por Scud
Gracias por tu respuesta.
Tu código es mucho más limpio que el mío, pero disculpa, solo llevo dos semanas aprendiendo Python. :D
Sin embargo, creo que no está escribiendo los archivos en la ubicación correcta, ni siquiera rellenándolos.

Pero ahora mismo estoy un poco aturdido, así que dejo de programar por hoy. Mañana haré las pruebas y te daré un informe completo.

Gracias de nuevo

Re: Error de implementación del paquete

Publicado: 25 de marzo de 2020 - 11:49
por sfonteneau
Esto es la configuración de la sesión.

Por lo tanto, la configuración de la sesión comienza cuando se abre la sesión.

Re: Error de implementación del paquete

Publicado: 26 de marzo de 2020 - 09:38
por Scud
Hola,
debo haber cometido un error porque no funciona. Reemplacé todo mi código con el tuyo, pero no escribe nada en el archivo .cfg.
Respecto a tu código, no veo dónde defines la variable `current_user`.

Como es una función conocida de Wapt, no necesito incluirla en el código, ¿verdad?

De igual manera, con la variable `session_setup`, tengo problemas para entender cómo recupera automáticamente todas las variables (rutas, etc.) y cómo escribe en el archivo. Mi código era más básico, pero más fácil de entender para un principiante. ;)

Gracias por tu ayuda.

Re: Error de implementación del paquete

Publicado: 26 de marzo de 2020 - 12:50 p. m.
por sfonteneau
A mí me funciona

Y en la parte superior del script, importamos setuphelpers:

Código: Seleccionar todo

from setuphelpers import *
Esto explica por qué ya tenemos muchas cosas disponibles; Pyscripter ofrece autocompletado para ayudarte.

Para las diferentes cosas a utilizar:
- `get_current_user()` está en setuphelpers y recupera el usuario actual
- install_msi_if_needed está en setuphelpers, desinstalando fácilmente un MSI
- os.environ.get('HOMEPATH') es aproximadamente el valor de %HOMEPATH%
- `makepath` está en setuphelpers, te permite transformar este `makepath('c:','toto','tata')` en este `'c:\toto\tata'`
- mkdirs está en setuphelpers, crea una carpeta
- url_owncloud se define en la parte superior de setup.py
- inside_owncloud_file representa el contenido de nuestro archivo con las diferentes variables (%s) https://python.developpez.com/cours/Div ... trings.php

Re: Error de implementación del paquete

Publicado: 26 de marzo de 2020 - 15:19
por Scud
Acabo de realizar otra prueba.
Eliminé el paquete de mi repositorio privado (y me di cuenta de que si se mantiene el mismo nombre, hay que eliminarlo tantas veces como se haya añadido).
Una vez vacío, recreé un paquete usando tu código. El resultado fue el mismo. Owncloud se instala y desinstala sin problemas.
Sin embargo, cierro la sesión (o incluso la reinicio) y no creo una carpeta, por lo que no se rellena el archivo .cfg.

Re: Error de implementación del paquete

Publicado: 26 de marzo de 2020 - 15:22
por sfonteneau
En un símbolo del sistema puedes ejecutar:

Código: Seleccionar todo

wapt-get session-setup nomdevotrepaquet -f