Página 1 de 1

[RESUELTO] Creación del paquete de software Sphinx v5

Publicado: 14 de diciembre de 2017 - 09:38
por olaplanche
Buen día,

Estoy abriendo un nuevo hilo para finalizar mi paquete de instalación del software Sphinx.

Encontré un procedimiento de instalación silenciosa más sencillo que mi método inicial en el hilo sobre el error de codificación de caracteres. Simplemente crea un archivo license.dat con la información correcta en la raíz de la carpeta de instalación.
A continuación, lanzamos la instalación con el siguiente comando: install.exe /s

La instalación funciona sin problemas fuera de wapt, sin embargo una vez empaquetado la instalación procede pero sin la licencia.
Al observar más de cerca, observo que tan pronto como se ejecuta el archivo install.exe, se elimina la carpeta temporal del paquete.
Supongo, por tanto, que el programa de instalación no tiene tiempo para leer el archivo de licencia; ¿es posible retrasar la eliminación de la carpeta temporal?

Sólo para que lo sepas, aquí está mi código:

Código: Seleccionar todo

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

uninstallkey = []

def install():
    print('installing wapt-sphinxv5')
    install_exe_if_needed("SphinxV5\Install.exe",'/s')

def uninstall():
    run(r'"C:\SphinxV5\licence\UNWISE.EXE" /s C:\SphinxV5\licence\install.log')
    remove_tree(r'C:\SphinxV5')
Para tu información:
- Versión WAPT instalada: 1.3.13
- Sistema operativo del servidor: Debian Jessie
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10

GRACIAS

Re: Creación del paquete de software Sphinx v5

Publicado: 19 de diciembre de 2017 - 18:57
por dcardon
Buenas noches, Olaplanche.

El directorio temporal creado por WAPT durante la instalación del paquete se elimina tras la ejecución de la función `install()`. Por lo tanto, el archivo está disponible al ejecutar `SphinxV5\Install.exe`.

Debes comprobar si el archivo de datos debe ubicarse en el directorio raíz del paquete (`basedir`) o en el directorio de SphinxV5 (el directorio del binario).

Además, presta atención a las barras invertidas; debes duplicarlas o añadir una 'r'' antes de la cadena, por ejemplo, `r'Install\Sphinxv5.exe'`.

Re: Creación del paquete de software Sphinx v5

Publicado: 20 de diciembre de 2017 - 09:05
por olaplanche
Hola y gracias

El archivo de licencia debe estar ubicado en la misma carpeta que el binario.
Acabo de realizar una prueba para confirmar mi hipótesis con este nuevo código:

Código: Seleccionar todo

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

uninstallkey = []

def install():
    print('installing wapt-sphinxv5')
    mkdirs(r'c:\temp')
    copytree2('SphinxV5',r'c:\temp\SphinxV5')
    install_exe_if_needed(r'c:\temp\SphinxV5\Install.exe','/s')

def uninstall():
    run(r'"C:\SphinxV5\licence\UNWISE.EXE" /s C:\SphinxV5\licence\install.log')
    remove_tree(r'C:\SphinxV5')
De esta forma, la activación funciona correctamente. Si dejo que la instalación continúe desde el directorio base, veo claramente que, en cuanto se ejecuta install.exe, se eliminan algunos archivos del directorio base (probablemente los que no están bloqueados por el binario), incluido el archivo de licencia. Por lo tanto, el binario, que debería acceder a él más tarde, no lo encuentra.

Re: Creación del paquete de software Sphinx v5

Publicado: 14 de diciembre de 2018 - 13:37
por olaplanche
¡Paquete finalizado!
Aquí está la versión final del código:

Código: Seleccionar todo

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

uninstallkey = []

def install():
    print('installing wapt-sphinxv5')
    install_exe_if_needed("SphinxV5\Install.exe","/s")
    time.sleep(60)
    killalltasks('Licence.exe')

def uninstall():
    run(r'"C:\SphinxV5\licence\UNWISE.EXE" /s C:\SphinxV5\licence\install.log')
    remove_tree(r'C:\SphinxV5')