Bonjour,
Mon entreprise a besoin de multi-instance pour un logiciel, et elle ne veut pas que j'utilise installShield. Du coup j'ai crée un MSI avec Visual Studio. Afin de faire du multi-instance, j'ai créé une petite application qui change le ProductPackage et le ProductCode afin de pouvoir lancer l'installation plusieurs fois.
Lorsque j'installe une instance, je créé une clé de registre dans Software où je renseigne le Path et le ProductCode, ce qui me permet de gérer la désinstallation de mes instances. Mais le problème est là, et il est vraiment étrange.
Lorsque j'installe une instance donc, j'écris les valeurs dans le registre via une custom action, et lorsque je désinstalle une instance, je les supprime dans la custom action Unistall()... seulement cela ne fonctionne que si j'ai une seule instance :
Le problème est que si j'ai plusieurs instances installées, cette fonction n'est pas appelée. Elle n'est appelée que si je désinstalle la dernière instance. Pourtant les ProductCode et ProductPackage sont différents, et même en mettant un GUID différent en ProductName, j'ai toujours le même problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public override void Uninstall(System.Collections.IDictionary savedState) { MessageBox.Show(System.Reflection.Assembly.GetExecutingAssembly().Location); CleanRegistry(); //Fonctionne tres bien base.Uninstall(savedState); }
En espérant avoir été assez clair,
Merci de prendre le temps de me répondre si vous avez des idées
Partager