2010-05-14 6 views
1

J'ai été bloqué sur celui-ci pendant un moment. Je vais essayer d'expliquer dans les termes les plus simples et au meilleur de ma connaissance. Je vais honorer toute aide.Désenregistrement d'une DLL COM avec un projet de configuration C#

J'ai un projet C# qui utilise une DLL ActiveX compilée VB6 que je suis en permanence mise à jour. Je compile le projet d'installation, l'envoie au client et exécute l'installation. Lors de la construction du projet d'installation mis à jour, j'augmenterais la 'Version' du projet d'installation afin qu'il ne s'embarrasse pas de 'Une autre version est déjà installée'. Ce qui a commencé à se produire après quelques mises à jour, j'ai commencé à remarquer que la DLL ne serait pas mise à jour vers la nouvelle version dans le programme d'installation. L'ordinateur client possédait la DLL d'origine à la fois installée et enregistrée. Premier symptôme: méthode non trouvée exceptions du code C# du client.

Ce n'est pas une DLL partagée et seule cette application en a besoin.

J'ai remarqué que lors de la désinstallation de l'application (par la procédure habituelle) la DLL n'est pas non plus supprimée du dossier de l'application bien que je définisse la propriété 'Permanent' de ce fichier sur false. Les entrées d'enregistrement dans le registre sont également conservées.

Je met à jour dans VS6.0 la version de la DLL (généralement augmenter le nombre de build) avant de le construire. Puis, dans VS2008, je l'enlève des références, et je l'ajoute de nouveau à partir de l'onglet «Parcourir», sans l'enregistrer à nouveau sur ma machine dev et l'ajouter à partir de l'onglet COM.

J'ai pensé à ces options.

  • étape personnalisée dans le projet d'installation pour RegSVR32.exe/u 'chemin hardcoded de mon dll à désinstaller (laid)
  • trouver une certaine façon comment la propriété « Isoler » peut travailler pour moi sans vous inscrire
  • Découvrez comment exécuter le projet d'installation 'Conditions' qui vérifie la version de la bibliothèque et met à jour le fichier en conséquence à chaque installation)

Toute aide serait la bienvenue.

+0

Pourquoi utilisez-vous pour créer un programme d'installation? ClickOnce? InstallShield? Un programme d'installation personnalisé? –

+0

Ce n'est pas un gros produit et j'aimerais aussi avoir de l'expérience. Je crois aussi que ce que j'essaie de faire est basique. Je chercherai un produit dans le futur, mais pour l'instant c'est mon choix. J'apprécie votre commentaire. –

+0

J'ai essayé de définir la propriété de la référence sur 'Isolated', et la propriété Register dans le projet setup sous le nom registerRelativePath (quelque chose de similaire). Je reçois un avertissement lors de la construction du projet d'installation mais semble ne pas enregistrer la DLL et fonctionne. Encore ne l'enlèvera pas au désinstaller cependant. –

Répondre

0

Par curiosité? Pourquoi ne pas essayer WiX? http://wixtoolset.org/

Il est idéal pour les installateurs de construction et vous pouvez faire ce genre de choses aussi facilement que:

<File Id="guifreak3" Name="Guifreaks.NavigationBar.XmlSerializers.dll" Source="$(var.Plex.MobileHub.Client.Interface.TargetDir)Guifreaks.NavigationBar.XmlSerializers.dll"/> 

Wix supprimera automatiquement le dll lorsqu'il est désinstallée.