Question

Je suis à l'aide d'un VS 2008 le programme d'Installation et de Déploiement du projet de déployer un mélange réussi / non géré application.J'ai eu du mal à s'enregistrer en mode mixte DLL à l'aide de l'enregistrement de la propriété ("vsdraCOM" valeur énumérée du "Registre de la propriété".) Comme solution de contournement, j'ai ajouté un .NET installation personnalisée de l'assemblée (avec une classe qui dérive de Système.La Configuration.Installer.Installateur.) Je suis certain que cette classe est en cours d'exécution et un certain nombre d'opérations installer et désinstaller à l'aide de code dans cette assemblée, y compris l'exécution de la Dll(Onu)RegisterServer point d'entrée d'un certain nombre d'assemblages.

Cependant, une DLL n'est pas avec succès l'enregistrement.C'est la seule DLL qui dépend de certains de la 3e partie redistribuable assemblées qui veulent être installé dans le GAC.J'ai ces assemblées installé à la GAC grâce à la prise en charge intégrée pour que, dans VS 2008 de configuration et de déploiement des projets, et je sais que c'est de travailler.J'ai confirmé que ce qui se passe est que la coutume d'action est en cours d'exécution avant que le programme d'installation exécute le GAC installation.

Ouf.Donc ma question est, est-il un moyen de forcer le programme d'installation pour exécuter le GAC installation avant l'exécution de l'action personnalisée?Est-il possible d'utiliser la "Condition" de la propriété de l'action personnalisée pour ce faire?Si non, quelle est ma meilleure alternative?Capturer les entrées de registre à partir de la DLL et les ajouter à l'paramètres du registre pour le programme d'installation (ne pas comme ça parce que quelqu'un peut ajouter de nouveaux serveurs COM de la classe dans l'avenir)?À l'aide de .NET code d'installation de l'assembly dans le GAC manuellement (vous ne savez pas comment le faire encore)?

Merci,

Dave

Était-ce utile?

La solution

Les projets d'installation, vous pouvez créer dans Visual Studio sont très limitées.Elle ne permet que des actions personnalisées pour être planifiée à 4 points.Cependant, MSI permet à des actions personnalisées à être organisés à tout moment dans le processus, avec quelques restrictions sur ce qu'ils peuvent faire.

Ma première solution est de cesser d'utiliser Visual Studio 2008 en tant que votre installation de l'outil de développement.L'équipe Visual Studio a essayé de faire abstraction de toute la complexité de la création d'une installation.Cependant, dans le processus, ils ont aussi enlevé toute la souplesse de MSI.Wix, InstallShield, ou Sages, sont de bien meilleurs produits pour rien, mais simple installe.J'ai commencé à l'aide de Visual Studio pour notre installe et il a fini par être trop de travail.Il y avait toujours un de plus de solution de contournement pour être mis en œuvre et ses effets secondaires à traiter.

Si vous ne pouvez pas changer de technologie, alors vous aurez besoin d'apprendre comment modifier manuellement la résultante fichier MSI.Dans votre cas, vous devez modifier la table InstallExecuteSequence, http://msdn.microsoft.com/en-us/library/aa369500(SV.85).aspx.Vous pouvez le faire manuellement par l'intermédiaire de l'Orca, http://msdn.microsoft.com/en-us/library/aa370557(SV.85).aspx ou par l'intermédiaire de l'API MSI http://msdn.microsoft.com/en-us/library/aa372860(SV.85).aspx.Assurez-vous de télécharger Orca et exécuter les scripts de validation à l'encontre de votre installation.Les scripts de signaler de nombreux problèmes de fixation va vous sauver d'innombrables heures lors de déploiement sur les ordinateurs client.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top