Página 1 de 1
[RESUELTO] Creación de paquetes de software Gesper
Publicado: 25 de agosto de 2017 - 08:45
por olaplanche
Buen día,
Estoy creando un nuevo paquete para poder implementar el software Gesper.
La instalación y desinstalación funcionan correctamente en mi paquete, pero me gustaría implementar el archivo de configuración del software en el directorio %appdata% del usuario. Obviamente, estoy teniendo algunas dificultades. Este es mi código:
Código: Seleccionar todo
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
def install():
print('installing wapt-gesper')
install_exe_if_needed("Gesper_Install_7.7.2.exe",'/verysilent /TASKS="MSDENonInstall"',key='{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1',min_version='7.7.0.0',killbefore='gesper.exe')
uninstallkey.remove('{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1')
create_desktop_shortcut(r'Gesper',target=u'C:\Program Files (x86)\CAP-RH\Gesper\Gesper.exe')
import tempfile
pathparamsfile = makepath(tempfile.gettempdir(),'params.ini')
pathuser = user_appdata()
data = ur"""[SETUP]
data_server=monserveur
data_access=
archives_path=C:\GESPER_BACKUP
"""
fichier = open(pathparamsfile, "w")
fichier.write(data)
fichier.close()
mkdirs(makepath('%s',Gesper) % pathuser)
filecopyto('%s/params.ini' % pathparamsfile,'%s/Gesper' % pathuser)
remove_file(pathparamsfile)
def uninstall():
print('uninstalling wapt-geper')
run('"C:\Program Files (x86)\CAP-RH\Gesper\unins000.exe" /verysilent')
run('"MsiExec.exe" /I{900D6ADF-DF79-46FB-A58E-E89A73B2A132} /qn')
remove_desktop_shortcut('Gesper.lnk')
Gracias por su ayuda
Re: Creación de paquetes de software Gesper
Publicado: 25 de agosto de 2017 - 08:49
por sfonteneau
Re: Creación de paquetes de software Gesper
Publicado: 6 de septiembre de 2017 - 8:53 a. m.
por olaplanche
Buen día,
Tras modificar mi código de esta manera:
Código: Seleccionar todo
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
def install():
print('installing wapt-gesper')
install_exe_if_needed("Gesper_Install_7.7.2.exe",'/verysilent /TASKS="MSDENonInstall"',key='{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1',min_version='7.7.0.0',killbefore='gesper.exe')
uninstallkey.remove('{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1')
create_desktop_shortcut(r'Gesper',target=u'C:\Program Files (x86)\CAP-RH\Gesper\Gesper.exe')
def session_setup():
import tempfile
pathparamsfile = makepath(tempfile.gettempdir(),'params.ini')
pathuser = user_appdata()
data = ur"""[SETUP]
data_server=monserveur
data_access=
archives_path=C:\GESPER_BACKUP
"""
fichier = open(pathparamsfile, "w")
fichier.write(data)
fichier.close()
mkdirs(makepath('%s',Gesper) % pathuser)
filecopyto('%s/params.ini' % pathparamsfile,'%s/Gesper' % pathuser)
remove_file(pathparamsfile)
def uninstall():
print('uninstalling wapt-geper')
run('"C:\Program Files (x86)\CAP-RH\Gesper\unins000.exe" /verysilent')
run('"MsiExec.exe" /I{900D6ADF-DF79-46FB-A58E-E89A73B2A132} /qn')
remove_desktop_shortcut('Gesper.lnk')
Al ejecutar session-setup, recibo el siguiente mensaje de error:
638 CRÍTICO NameError: el nombre global 'Gesper' no está definido
¿Alguna idea?
GRACIAS
Re: Creación de paquetes de software Gesper
Publicado: 6 de septiembre de 2017 - 13:33
por sfonteneau
Re: Creación de paquetes de software Gesper
Publicado: 6 de septiembre de 2017 - 14:42
por olaplanche
Acabo de solucionar mi problema modificando dos líneas de código de la siguiente manera:
Código: Seleccionar todo
mkdirs('%s\\Gesper' %pathuser)
filecopyto(pathparamsfile,'%s/Gesper' % pathuser)
¡Mi paquete ya funciona perfectamente!
Gracias por su ayuda
Re: [Resuelto] Creación del paquete de software Gesper
Publicado: 6 de septiembre de 2017 - 16:01
por olaplanche
Había un pequeño error tipográfico en la línea de código para desinstalar SAP Crystal Reports; este es el código final:
Código: Seleccionar todo
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
def install():
print('installing wapt-gesper')
install_exe_if_needed("Gesper_Install_7.7.2.exe",'/verysilent /TASKS="MSDENonInstall"',key='{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1',min_version='7.7.0.0',killbefore='gesper.exe')
uninstallkey.remove('{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1')
create_desktop_shortcut(r'Gesper',target=u'C:\Program Files (x86)\CAP-RH\Gesper\Gesper.exe')
def session_setup():
import tempfile
pathparamsfile = makepath(tempfile.gettempdir(),'params.ini')
pathuser = user_appdata()
data = ur"""[SETUP]
data_server=dnsdemonserveur
data_access=
archives_path=C:\GESPER_BACKUP
"""
fichier = open(pathparamsfile, "w")
fichier.write(data)
fichier.close()
mkdirs('%s\\Gesper' %pathuser)
filecopyto(pathparamsfile,'%s/Gesper' % pathuser)
remove_file(pathparamsfile)
def uninstall():
print('uninstalling wapt-geper')
run('"C:\Program Files (x86)\CAP-RH\Gesper\unins000.exe" /verysilent')
run('"MsiExec.exe" /X{900D6ADF-DF79-46FB-A58E-E89A73B2A132} /qn')
remove_desktop_shortcut('Gesper.lnk')
Re: [Resuelto] Creación del paquete de software Gesper
Publicado: 17 de septiembre de 2021 - 14:28
por olaplanche
Buen día,
Versión del código actualizada a partir de septiembre de 2021:
Código: Seleccionar todo
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
# Defining variables
bin_name_string = 'Logiciel Gesper - installation-%s.exe'
bin_temp = 'Logiciel Gesper - installation.exe'
url_dl = 'https://www.aplon.org/Ressources/Documents/T%C3%A9l%C3%A9chargements/Gesper%20(RH)/Logiciel%20Gesper%20-%20installation.exe'
app_uninstallkey = '{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1'
SERVERNAME = 'MONSERVERGESPER' # Le nom NETBIOS du serveur gesper
def install():
# Initializing variables
package_version = control.version.split('-',1)[0]
bin_name = bin_name_string % package_version
session_setup()
print('Installing: %s' % bin_name)
try:
install_exe_if_needed(bin_name,'/verysilent /TASKS="MSDENonInstall"',key=app_uninstallkey,min_version=package_version,killbefore='gesper.exe',timeout=600)
uninstallkey.remove(app_uninstallkey)
except TimeoutExpired:
pass
killalltasks('AdminConsole.exe')
create_desktop_shortcut(r'Gesper',target=u'C:\Program Files (x86)\CAP-RH\Gesper\Gesper.exe')
def session_setup():
import tempfile
pathparamsfile = makepath(tempfile.gettempdir(),'params.ini')
pathuser = user_appdata()
data = r"""[SETUP]
data_server=%s
data_access=
archives_path=C:\GESPER_BACKUP
""" % SERVERNAME
fichier = open(pathparamsfile, "w")
fichier.write(data)
fichier.close()
mkdirs('%s\\Gesper' % pathuser)
filecopyto(pathparamsfile,'%s/Gesper' % pathuser)
remove_file(pathparamsfile)
def update_package():
print('Download/Update package content from upstream binary sources')
# Initializing variables
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt()
latest_bin = bin_temp
version = '1.0' # Fake version
print('Download url is: ' + url_dl)
# Downloading latest binaries
if isfile(bin_temp):
remove_file(bin_temp)
if not isfile(latest_bin):
print('Downloading: %s' % latest_bin)
wget(url_dl, latest_bin, proxies=proxies)
# Checking version from file
version_from_file = get_version_from_binary(latest_bin)
if version != version_from_file:
os.rename(latest_bin,bin_name_string % version_from_file)
version = version_from_file
# Changing version of the package
control.version = '%s-%s' % (version, int(control.version.split('-')[-1])+1)
control.save_control_to_wapt()
print('Changing version to: %s in WAPT\\control' % control.version)
# Deleting outdated binaries
remove_outdated_binaries(version)
# put here what to do to update package content with newer installers.
# launched with command wapt-get update-package-sources <path-to-wapt-directory>
# implicit context variables are WAPT, basedir, control, user, params, run
# if attributes in control are changed, they should be explicitly saved to package file with control.save_control_to_wapt()
def get_proxies():
import platform
if platform.python_version_tuple()[0] == '3':
from urllib.request import getproxies
else:
from urllib import getproxies
return getproxies()
def get_proxies_from_wapt():
import platform
proxies = {}
if platform.system() == 'Windows':
waptconsole_ini_path = makepath(user_local_appdata(), 'waptconsole', 'waptconsole.ini')
else:
waptconsole_ini_path = makepath(user_home_directory(), '.config', 'waptconsole', 'waptconsole.ini')
if isfile(waptconsole_ini_path):
proxy_wapt = inifile_readstring(waptconsole_ini_path, 'global', 'http_proxy')
if proxy_wapt:
proxies = {'http': proxy_wapt, 'https': proxy_wapt}
return proxies
def remove_outdated_binaries(version, list_extensions=['exe','msi','deb','rpm','dmg','pkg'], list_filename_contain=None):
if type(list_extensions) != list:
list_extensions = [list_extensions]
if list_filename_contain:
if type(list_filename_contain) != list:
list_filename_contain = [list_filename_contain]
list_extensions = ['.' + ext for ext in list_extensions if ext[0] != '.']
for file_ext in list_extensions:
for bin_in_dir in glob.glob('*%s' % file_ext):
if not version in bin_in_dir:
remove_file(bin_in_dir)
if list_filename_contain:
for filename_contain in list_filename_contain:
if not filename_contain in bin_in_dir:
remove_file(bin_in_dir)
def get_version_from_binary(filename, parameter='ProductVersion'):
if filename.endswith('.msi'):
return get_msi_properties(filename)[parameter]
else:
return get_file_properties(filename)[parameter]
def uninstall():
print('Uninstalling: %s' % control.package)
run(r'"%s\CAP-RH\Gesper\unins000.exe" /verysilent' % programfiles32)
run(r'"MsiExec.exe" /X{81BDC5D8-E319-435E-91F5-0896E599717A} /qn')
remove_desktop_shortcut('Gesper.lnk')