Updatengine : désinstaller un logiciel avant d'en installer un nouveau
Nous avons déjà parlé d'Updatengine dans ces pages : c'est un logiciel libre de déploiement de logiciels pour Windows composé de clients sur chaque poste contrôlés par un serveur développé sous Python/Django. Je l'utilise avec bonheur en production sur un parc d'une trentaine de machines avec grande satisfaction.
Récemment, j'ai cherché à désinstaller un logiciel avant d'en installer la mise à jour.
Possibilité 1 : le logiciel est déployé avec Windows Installer
Si le logiciel a été déployé avec Windows Installer, alors l'utilitaire "wmic" permet de le désinstaller. Le script de désinstallation pourra alors ressembler à :
wmic product where "name like 'Logiciel%'" call uninstall logiciel-nouvelle-version.exe /s section_end download_no_restart
Par exemple, pour désinstaller les anciennes versions de Java avant d'en installer une nouvelle, on pourra utiliser :
wmic product where "name like 'Java%'" call uninstall jre-8u101-windows-x64.exe /s section_end download_no_restart
Possibilité 2 : s'il n'est pas visible/désinstallable avec WMIC
On peut alors simplement exécuter le désinstallateur (à condition d'en connaître le chemin) :
IF EXIST "C:\\Program Files\\Logiciel\\uninstall.exe" ("C:\\Program Files\\Logiciel\\uninstall.exe" /s Logiciel-nouvelle-version-install.exe /s) ELSE (Logiciel-nouvelle-version-install.exe /s) )
Par exemple pour SumatraPDF, lecteur PDF libre pour Windows, cela pourra devenir :
IF EXIST "C:\\Program Files\\SumatraPDF\\uninstall.exe" ("C:\\Program Files\\SumatraPDF\\uninstall.exe" /s SumatraPDF-3.1.2-install.exe /s) ELSE (IF EXIST "C:\\Program Files (x86)\\SumatraPDF\\uninstall.exe" ("C:\\Program Files (x86)\\SumatraPDF\\uninstall.exe" /s SumatraPDF-3.1.2-install.exe /s) ELSE (SumatraPDF-3.1.2-install.exe /s) )
Bon entretien de vos machines !