L2T

| BLOG IT |

L2T

| BLOG IT |

f3-logo-flexerasoftware

Lorsque vous désinstallez ou mettez à jour un programme, vous pouvez être confronté à un processus en cours d’exécution ne vous permettant pas de poursuivre.

Vous obtenez alors une fenêtre générée par Installshield demandant à l’utilisateur de fermer ce processus.

Taskill1

Cette boîte de dialogue  est créée par le moteur InstallShield après que l’action standard « CostFinalize » soit terminée.

Vous avez donc deux choix, soit laisser cette boite de dialogue (impossible si vous faite vos désinstallation en mode silencieux) soit décider de tuer vous-même ce processus avant que la boite de dialogue ne s’affiche.

InstallShield vous propose plusieurs méthodes pour le kill process.

 

Méthode 1

Cette méthode n’est valable que depuis la version 2012 Sprint. Elle utilise la « custom Actions » Kill Process :

  • Dans un projet :

Créer une nouvelle « custom action » de type New Kill Process

Taskill2

  • Dans un MST

Vous ne disposez pas de l’option en direct. Il  vous faut créer la fonction en choisissant Custom Action Wizard.

Taskill3

Un assistant s’ouvre :

Taskill4

Donner lui un nom

Taskill5

En type: “Call a function in a Windows Installer dynamic-link library”

En Location: “Stored in the Binary table”

Taskill6

La source doit être la Dll SetAllUsers.dll et cibler KillProcess

Vous pouvez aussi utilisez :KillProcessByID, KillProcessDeferred et KillProcessByIDDeferred

Taskill7

Faites ensuite votre choix du processing. Attention si vous choisissez Synchronous (Check exit code) vous risquez un arrêt de votre  MSI si le ou les processus ne sont pas en mémoire.

Taskill8Taskill9

Le séquencer en fonction de vos besoins, dans l’exemple il est positionné très tôt dans la séquence pour un package silencieux

Taskill10Taskill11

Vous obtenez que ce soit dans un MST ou via un projet la vue suivante (En mode projet n’oubliez pas de modifier les options de séquençage et de processing

Taskill12

Dans Property, ajouter la propriété ISTerminateProcesses et y remplir la liste des processus à tuer séparé par un point-virgule (;)

Taskill13

Méthode 2

Construire votre propre « Kill-Process action » personnalisée

Si vous utilisez des versions antérieures à InstallShield 2012 Sprint, ou si vous avez besoins d’utilisé le caractère *, vous devez créer votre propre action personnalisée.

Bien sûr vous pouvez utiliser un script de type vbs ou InstallScript dans votre custom action, pour vérifier les processus en cours.

Mais plus simplement vous pouvez construire cette « custom action Kill Process » à l’aide du clic droit « New EXE \ Path referencing a directory »

Taskill14

Créer une nouvelle action personnalisée

Sélectionnez « WindowsFolder »

Séquence correctement : Attention le moteur InstallScript doit résoudre le répertoire de travail « WindowsFolder » vous devez donc séquencer après « ResolveSource » dans «Install UI Sequence »  et après « CostFinalize » dans « Install Exec Sequence »

Entrez le « taskkill /F /IM XXXXXX »

Taskill15