Pagina 1 di 1

Pacchetto IBM Notes

Pubblicato: 18 giugno 2015 - 13:56
di Intern FGA
Buongiorno,

Ho bisogno di creare un pacchetto per un'applicazione che non è disponibile nei repository ufficiali TIS.
IBM Notes 9.0.1

Ho due eseguibili: il primo disinstalla in modo pulito qualsiasi versione di Lotus Notes eventualmente installata sul computer client. Il secondo installa IBM Notes 9.0.1.

Sono riuscito a creare un pacchetto per la disinstallazione e un altro per l'installazione separatamente, funziona molto bene, ma purtroppo non gestisce la disinstallazione remota, bisogna alternare i pacchetti e non è proprio una tecnica ottimale.

Quindi mi ritrovo con due pacchetti, due script, completamente indipendenti.

Codice: Seleziona tutto

def install():
    print('Désinstallation de IBM Notes')
    run(r'"nice.exe" -rp -rd -wipe /qn+')

Codice: Seleziona tutto

def install():
    print('Installation de IBM Notes 9.0.1')
    run(r'"IBM_NOTES_CLIENT_9.0.1_WIN_FR.exe" -s -a /s /v"ADDFEATURES=NotesPlugin /qn+"')
Vorrei:
  1. Unisci i due codici in modo da poter installare o disinstallare dalla console utilizzando il pulsante dedicato, invece di passare da un pacchetto all'altro.
  2. Quando si esegue l'installazione su un computer, verificare se Notes è già installato; in tal caso, disinstallarlo prima
  3. Sapere come arrestare servizi e processi in Python.
Non ti sto chiedendo necessariamente di fornirmi direttamente il codice (sarebbe davvero bello, ma non ti chiedo così tanto), tra le applicazioni nel repository ufficiale, ci deve sicuramente essere un esempio che utilizza lo stesso schema di installazione per ispirarmi.

Non avendo alcuna conoscenza di Python o di altri linguaggi, è molto difficile per me creare uno script senza un esempio.

Grazie in anticipo.

Re: Pacchetto IBM Notes

Pubblicato: 18 giugno 2015 - 14:23
di Frédéric Bonnier
Ciao,

credo che il pacchetto LibreOffice possa esserti d'aiuto: http://wapt.tranquil.it/wapt/tis-libreo ... 0_all.wapt.

Rileva se OpenOffice è installato e, in tal caso, lo disinstalla. Lo stesso vale per le altre versioni di LibreOffice.

Come ultima risorsa, organizziamo sessioni di formazione WAPT. :D

- Frédéric

Re: Pacchetto IBM Notes

Pubblicato: 19 giugno 2015 - 10:34
di Intern FGA
Grazie, mi sono ispirato in misura minore alla suite LibreOffice. Ecco il codice che ho creato:

Codice: Seleziona tutto

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

uninstallkey = []
uninstallstring = []

def install():
	if os.path.exists("C:\Program Files (x86)\IBM\Notes" or "C:\Program Files (x86)\IBM\Lotus\Notes"):
		print('Désinstallation des anciennes version de Notes')
		run(r'"IBM_Notes\nice.exe" -rp -rd -wipe /qn+')
		print('Installation de IBM Notes 9.0.1')
		run(r'"IBM_Notes\IBM_NOTES_CLIENT_9.0.1_WIN_FR.exe" -s -a /s /v"ADDFEATURES=NotesPlugin /qn+"')
	else:
		print('Installation de IBM Notes 9.0.1')
		run(r'"IBM_Notes\IBM_NOTES_CLIENT_9.0.1_WIN_FR.exe" -s -a /s /v"ADDFEATURES=NotesPlugin /qn+"')
Non capisco bene come funziona la disinstallazione dalla console.
In particolare
chiave di disinstallazione = []
stringa di disinstallazione = []

Nella documentazione, per uninstallstring c'è scritto "riga di comando per avviare la disinstallazione del software". Quindi ho aggiunto rapidamente:

Codice: Seleziona tutto

run(r'"IBM_Notes\IBM_NOTES_CLIENT_9.0.1_WIN_FR.exe" -s -a /s /v"ADDFEATURES=NotesPlugin /qn+"')
Ho provato a metterlo tra parentesi, ma senza successo.

Per uninstallkey = [], spetta a noi trovare la chiave di registro che ci permette di disinstallare il software o è WAPT a occuparsene durante l'installazione? Perché ho notato che non viene spesso compilata, e lo stesso vale per uninstallstring = [], che non viene sempre utilizzata.

Grazie per il tuo tempo.

Re: Pacchetto IBM Notes

Pubblicato: 24 giugno 2015 - 15:33
di Intern FGA
Me la sono cavata da sola e alla fine ho capito come funzionano i pacchetti, in particolare la disinstallazione tramite registro.
Ecco il mio copione, forse potrà essere utile ad altri.

Codice: Seleziona tutto

# -*- coding: utf-8 -*-

from setuphelpers import *
import platform

uninstallkey = []

def uninstall():
	# liste des logiciels nommés notes
	notes = installed_softwares('notes')
	# si cette liste n'est pas vide, on desinstalle explicitement chaque logiciel
	if notes:
		# boucle pour chaque logiciel trouvé
		for uninstall in notes:
			# on regarde si la version 9 est installée
			if uninstall['version'].startswith('9.'):
				# on recupere la commande de desinstallation correspondant à la clé du logiciel
				cmd = WAPT.uninstall_cmd(uninstall['key'])
				print(u'uninstalling %s' % (uninstall['name'],))
				# on execute la commande de desinstallation
				run_notfatal(cmd)
				# on supprime les dossiers restants
				run_notfatal(r'rmdir "C:\Program Files (x86)\IBM" /s /q ')

def install():
	# liste des logiciels nommés notes
	old_notes = installed_softwares('notes')
	zipmail = installed_softwares('zipmail')
	swiftfile = installed_softwares('swiftfile')
	# si zipmail est installé on desinstalle explicitement chaque logiciel
	if zipmail:
		# boucle pour chaque logiciel trouvé
		for uninstall in zipmail:
			# on regarde si la version 12 est installée
			if uninstall['version'].startswith('12.'):
				# on recupere la commande de desinstallation correspondant à la clé du logiciel SwiftFile 4.2
				cmd = WAPT.uninstall_cmd(uninstall['key'])
				print(u'uninstalling %s' % (uninstall['name'],))
				# on execute la commande de desinstallation
				run_notfatal(cmd)
	# pour désinstaller les anciennes version de zipmail
	zipmail = installed_softwares('zipmail')
	if zipmail:
		print('Supression de Zipmail v10')
		run_notfatal(r'C:\Windows\IsUn040c.exe -a -x -f"c:\Program Files (x86)\IBM\Lotus\Notes\Data\zmlnl.isu" -c"C:\Program Files (x86)\IBM\Lotus\Notes\Uninst.dll')
	# si swiftfile est installé on desinstalle explicitement chaque logiciel
	if swiftfile:
		# boucle pour chaque logiciel trouvé
		for uninstall in swiftfile:
			# on regarde si la version 4.2 est installée
			if uninstall['version'].startswith('4.2'):
				# on recupere la commande de desinstallation correspondant à la clé du logiciel SwiftFile 4.2
				cmd = WAPT.uninstall_cmd(uninstall['key'])
				print(u'uninstalling %s' % (uninstall['name'],))
				# on execute la commande de desinstallation
				run_notfatal(cmd)
	# pour désinstaller les anciennes version de zipmail
	zipmail = installed_softwares('zipmail')
	if swiftfile:
		print('Supression de SwiftFile 4.00')
		run_notfatal(r'MsiExec.exe /qn /x {34843AB3-8DBA-4388-8838-080635E1EDB6}')
	# si notes est installé, on desinstalle explicitement chaque logiciel
	if old_notes:
		# boucle pour chaque logiciel trouvé
		for uninstall in old_notes:
			# on regarde si la version 8 est installée
			if uninstall['version'].startswith('8.'):
				print('Supression de Notes 8.x')
				run_notfatal(r'"nice.exe" -rp -rd -wipe /qn')
			if uninstall['version'].startswith('9.'):
				print('Supression de Notes 9.x')
				run_notfatal(r'"nice.exe" -rp -rd -wipe /qn')
			# on supprime les dossiers restants
			run_notfatal(r'rmdir "C:\Program Files (x86)\IBM" /s /q ')
	
	# on installe ibm notes
	print('Installation de IBM Notes 9.0.1')
	run_notfatal(r'"IBM_NOTES_CLIENT_9.0.1_WIN_FR.exe" -s -a /s /v"ADDFEATURES=NotesPlugin,ClientSingleLogon /qn+"')
I software ZipMail e SwftFile sono specifici per le postazioni di lavoro su cui viene distribuito il nostro software; adatta lo script in base alle tue esigenze.