2010-12-10 7 views
2

J'ai une mise à jour vers un fichier .DLL tiers qui doit être installé sur les ordinateurs de mes clients. Nous utilisons actuellement des installations automatisées via MSI créées dans Visual Studio 2010Projet d'installation de Visual Studio - installation forcée d'un fichier .DLL?

Malheureusement, le fichier .DLL tiers a été incorrectement versionné et la version du fichier n'a pas été augmentée par le fournisseur (ils ont seulement augmenté la version de l'assembly). Le fournisseur tiers est Microsoft, donc attendre sur eux pour résoudre le problème n'est pas réaliste. Nous devons obtenir le nouveau .DLL aux gens maintenant et dans une mise à jour MSI. À l'heure actuelle, la mise à jour MSI ne remplace pas le fichier .DLL

Existe-t-il un moyen dans le projet d'installation de VS2010 de forcer le remplacement d'un .DLL même si les versions de fichier correspondent?

Répondre

1

Si vous êtes prêt à faire une mise en page msi post-construction, vous pouvez cliquer sur la table Fichier et faire "version allongée". Une autre pensée est de ne pas mettre cette DLL dans votre installation. Trouvez un installateur de Microsoft (s'il existe) que vous pouvez placer dans un programme d'amorçage ou créer votre propre programme d'installation et utiliser AMUS au lieu de OMUS pour les règles de version.

+0

Impossible d'inclure le fichier .DLL dans l'emballage. Aucun MSM à travailler avec et je ne peux pas changer les paramètres d'installation de commutateur de toute façon. Le code de mise à jour automatique est déjà en cours d'exécution dans le champ. Quand il s'exécute, il s'exécute avec la ligne de commande qui effectue une mise à niveau silencieuse. Pouvez-vous élaborer sur la "version mensongère"? – Igorek

+0

Version Lying est l'endroit où vous mettez à jour la table de fichier pour tromper MSI en lui faisant croire qu'elle a une version plus récente alors qu'elle l'a réellement. Il y a quelques pièges mineurs mais, fondamentalement, cela vous donnera un Always Overwrite pour un seul composant. La vraie solution est de suivre les bonnes pratiques SCM avec vos ressources (oui, triste que ce soit Microsoft dont nous parlons ici). –

+0

Appréciez l'élaboration plus approfondie, mais je ne suis pas sûr de savoir comment aborder le problème de la commutation des versions par programmation. Google n'a pas beaucoup d'aide. Pouvez-vous fournir un lien avec quelques instructions sur la façon dont on s'y prendrait? Merci – Igorek

0

Vous ne pouvez pas simplement ajouter le fichier à votre programme d'installation en tant que 'fichier' et l'installer avec les autres fichiers? Ne le définissez pas en tant que sortie de projet ou aucune des actions d'installation en attente. Aller à la partie du fichier et faites un clic droit sur le dossier "Fichiers d'application", et dites> ajouter un fichier. Accédez au fichier que vous voulez et choisissez-le.

+0

N ° MSI a un processus appelé File Costing qui ressemble à la version du fichier (AssemblyFileVersion) et non à l'attribut AssemblyVersion. Si l'ancienne version et la nouvelle version de la DLL ont le même numéro de version, MSI ne l'écrasera pas même si elles sont différentes. –

+0

Même si vous lui dites EXPLICITEMENT de copier le fichier? Vous pouvez créer une classe d'installation personnalisée pour copier la DLL à partir d'un dossier temporaire créé par MSI, puis la supprimer une fois que vous l'avez copiée? Ça devient un peu bizarre maintenant ..... –

+0

J'ai essayé de mettre le fichier dans le paquet comme un fichier normal et de l'exclure des sorties. Il n'a pas été déployé sur l'ancienne version. – Igorek

Questions connexes