J'utilise Advanced Installer (MSI) pour installer une DLL d'extension shell pour un menu contextuel de l'explorateur. Cela fonctionne sauf sur désinstaller une action personnalisée dans InstallExecuteSequence J'ai dû ajouter une commande à regsvr32.exe/s/u afin de désenregistrer la DLL. Le problème que j'ai est que lors des réinstallations ultérieures du même produit (avec une version du produit différente et le code du produit) de sorte qu'il y ait d'abord une désinstallation automatique de l'application, parfois l'explorateur ne libère pas la DLL provoque l'affichage de la zone FilesInUse et invite à supprimer Explorer.exe ou redémarrer l'ordinateur. Comme l'extension shell n'a pas de bogue et n'a pas besoin d'être remplacée, et que je n'ai pas mis à jour son numéro de version entre les installations, je souhaite éviter de le réinstaller ou de vérifier s'il est utilisé à moins que sa version a changé.MSI InstallValidate FilesInUse hyperactive sur l'extension shell?
J'ai essayé d'ajouter une recherche du fichier MSI dans [APPDIR], mais tout ce qui revient est « C: \ » bien que le fichier est en fait quelque part ailleurs dans le dossier appdir
est-il un moyen facile ignorer la réinstallation du fichier s'il existe déjà et ignorer l'InstallValidate pour FilesInUse?