2 votes

MSI - ne nécessite pas la fermeture des applications

Comment puis-je modifier mon MSI pour qu'il n'exige pas la fermeture de TOUTES les autres applications en cours ? C'est assez drôle, si mon application est fermée manuellement avant la désinstallation, elle ne demandera pas de fermer outlook, firefox, etc.

3voto

mrnx Points 16039

L'invite est affichée automatiquement par l'action InstallValidate, vous ne pouvez donc pas modifier ce comportement. Vous pouvez l'empêcher en utilisant une action personnalisée qui ferme votre application avant InstallValidate.

En général, cela se fait en envoyant WM_CLOSE à la fenêtre principale de l'application (l'application doit gérer ce message pour que cela fonctionne).

Les autres applications (Outlook, Firefox, etc.) sont également affichées dans l'invite, car Windows Installer n'est pas très doué pour détecter les applications en cours d'exécution. Il vérifie essentiellement les dépendances de fichiers (par exemple, si plusieurs applications utilisent les mêmes DLL ou le même runtime), ce qui peut donner lieu à des faux positifs.

1voto

Christopher Painter Points 32519

MSI traitera automatiquement les fichiers verrouillés à l'aide d'un scénario de redémarrage. Le fait de demander la fermeture des applications est une tentative d'empêcher ce redémarrage. Vous pouvez supprimer le redémarrage, mais le fichier ne sera alors remplacé qu'après le redémarrage.

Quel est exactement le comportement que vous recherchez ?

BTW, lecture recommandée :

Boîte de dialogue FilesInUse

De là, suivez le lien vers InstallValidate et System Reboots.

1voto

Ivan Points 507

Comme l'a écrit mrnx, cette vérification des applications en cours d'exécution s'effectue au cours de l'opération suivante InstallerValider . Mais arrêter les applications avant cela n'est pas une bonne idée. D'autres vérifications peuvent échouer et MSI doit être en mesure de rétablir le système dans l'état où il se trouvait avant l'exécution de MSI, y compris les applications en cours d'exécution.

De plus, ces contrôles sont "immédiats" et non "différés".

IMO Les actions personnalisées visant à arrêter les applications doivent être exécutées juste avant " Supprimer les fichiers " et comme " différé "pour s'assurer qu'il s'exécute en tant qu'administrateur.

Pour empêcher l'affichage de la boîte de dialogue, la propriété suivante peut être utilisée :

<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" />

D'après ce que j'ai compris, il retombera toujours sur Fichiers en cours d'utilisation dialogue pendant Supprimer les fichiers s'ils sont encore utilisés à ce moment-là.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X