Page 1 sur 1

Paquet IBM Notes

Posté : 18 juin 2015 - 13:56
par StagiaireFGA
Bonjour,

Je dois créer un paquet d'une application non disponible sur les dépôts officiels TIS.
IBM Notes 9.0.1

J'ai deux exécutables, le premier désinstalle proprement toutes versions de lotus notes qui serai installé sur la machine cliente. Le deuxième installe IBM Notes 9.0.1.

J'ai réussi à créer un paquet pour désinstaller et un autre pour installer de manière séparée, ça fonctionne très bien, mais il ne gère malheureusement pas la désinstallation à distance, il faut alterner avec les paquets et ce n'est pas vraiment terrible comme technique.

Je me retrouve donc avec deux paquets, deux scripts, complètement indépendant.

Code : Tout sélectionner

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

Code : Tout sélectionner

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+"')
J'aimerais :
  1. Fusionner les deux codes afin de pouvoir installer ou désinstaller depuis la console avec le bouton prévu à cet effet. Au lieu d'alterner avec deux paquets.
  2. Au moment de l'installation sur une machine, détecter s'il y a déjà Notes d'installer, si oui lancer une désinstallation en premier
  3. Savoir comment arrêter des services et des processus en python.
Je ne demande pas forcément que vous fournissiez le code directement (ce serait vraiment bien, mais je n'en demande pas tant), parmi les applications du dépôt officiel, il doit surement y avoir un exemple reprenant le même schéma d'installation pour m'en inspirer.

N'ayant aucune connaissance en python ou dans un autre langage, il m'est très difficile de créer un script sans exemple.

Par avance, merci.

Re: Paquet IBM Notes

Posté : 18 juin 2015 - 14:23
par Frédéric Bonnier
Bonjour,

Je pense que le paquet LibreOffice peut t'aider http://wapt.tranquil.it/wapt/tis-libreo ... 0_all.wapt.

Il détecte si un OpenOffice est installé, si oui il le désinstalle. Pareil pour les autres version de LibreOffice.

Dernière solution, nous organisons des formations WAPT :D

Frédéric

Re: Paquet IBM Notes

Posté : 19 juin 2015 - 10:34
par StagiaireFGA
Merci, je me suis inspiré du paquet LibreOffice dans une moindre mesure. Voici le code que j'ai créé :

Code : Tout sélectionner

# -*- 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+"')
Pour pouvoir désinstaller depuis la console, je ne comprends pas trop comment ça fonctionne.
Notamment
uninstallkey = []
uninstallstring = []

Dans la doc, pour uninstallstring il dise "ligne de commande permettant de lancer la désinstallation du logiciel." je me suis donc empressé de mettre :

Code : Tout sélectionner

run(r'"IBM_Notes\IBM_NOTES_CLIENT_9.0.1_WIN_FR.exe" -s -a /s /v"ADDFEATURES=NotesPlugin /qn+"')
Entre crochet, mais sans succès.

Pour uninstallkey = [] c'est à nous de trouver la clé de registre permettant de désinstaller le logiciel ou c'est WAPT qui se charge lors de l'installation de la relever ? Car j'ai remarqué qu'elle n'était pas souvent renseignée de même pour uninstallstring = [] qui n'est pas toujours utilisé.

Merci, pour le temps que vous m'accordez.

Re: Paquet IBM Notes

Posté : 24 juin 2015 - 15:33
par StagiaireFGA
Je me suis débrouillé tout seul et à force j'ai compris comment fonctionne les paquets et notamment la désinstallation grâce au registre.
Voici mon script, peut-être qu'il servira à d'autres personnes.

Code : Tout sélectionner

# -*- 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+"')
Les logiciels ZipMail et SwftFile sont spécifiques aux postes sur lesquels ont déploie nos logiciels, adaptez le script, selon vos besoins.