Comment puis-je faire en sorte que mon programme d'installation VS2008 x86 installe des assemblys x64 sur x64 ?

StackOverflow https://stackoverflow.com/questions/61073

Question

J'utilise le programme d'installation VS2008 (plus une action Orca personnalisée) pour créer un programme d'installation pour mon produit .NET.

J'ai récemment découvert que l'un des assemblys tiers que j'utilisais était spécifique à x86 (car il inclut du code natif) ;ainsi, les clients x64 rencontraient des plantages au démarrage avec des erreurs indiquant que l'assembly n'était pas approprié pour leur plate-forme.

J'ai envoyé à un tel client une copie de la version x64 de cet assemblage tiers et lui ai dit de simplement la copier sur la version x86 existante.Ça a marché, ma chérie !Alors maintenant, je dois juste laisser le programme d'installation faire cela pour moi.

Cela semble en fait non trivial :(.Idéalement, je souhaite simplement que le programme d'installation (qui serait x86, puisqu'il peut fonctionner sur les deux plates-formes) inclue à la fois les versions x86 et x64 de cet assemblage tiers et installe celle appropriée.En d’autres termes, je souhaite un installateur unique qui facilite la vie de mes utilisateurs.

Je pensais avoir résolu ce problème, en utilisant les instructions conditionnelles MSI et tout ça.Mais apparemment non...Les projets de configuration VS2008 ne se compileront pas à moins que vous ne spécifiez "x86" ou "x64". Si vous spécifiez x86, il donne une erreur de compilation disant qu'il ne peut pas inclure l'assemblage X64.Si vous spécifiez x64, le résultat ne peut pas être exécuté sur un ordinateur x86.Condamner!

Quelqu'un a dû déjà avoir ce problème.Malheureusement, Google n'est d'aucune aide, alors je me tourne vers StackOverflow !

Était-ce utile?

La solution

Si je vous comprends bien, vous souhaitez faire une copie d'un fichier si vous installez sur x86 et d'un fichier différent (avec le même nom) si vous installez sur une plate-forme x64.

Tout d'abord, vous ne pouvez pas créer un MSI pour 2 plates-formes différentes, car un MSI x64 ne fonctionnera tout simplement pas sur une plate-forme x86 et un MSI x86 sera installé à l'aide de WOW64 sur une plate-forme x64.

D'un autre côté, vous POUVEZ créer un MSI x86 contenant 2 versions différentes d'un fichier et copier sélectivement le fichier approprié lors de l'installation.

Le moyen le plus simple consiste à utiliser WIX (V3) au lieu du générateur MSI VS2008 intégré.WIX vous offre un contrôle bien plus grand sur ce qui est installé sur la machine du client et où, la possibilité de générer différents programmes d'installation pour différentes plates-formes et la prise en charge complète de MSBuild en prime.(voir http://wix.sourceforge.net pour plus d'informations.)

Au cas où vous vous demanderiez si WIX est toujours en version bêta, les fichiers MSI générés sont parfaitement OK et je n'ai encore jamais rencontré de bug.(Et je développe des projets d'installation pour gagner ma vie.)

Enfin, vous pouvez vérifier avec la propriété VersionNT64 si un programme d'installation x86 s'exécute sur une plateforme x64.Si cette propriété est présente, vous utilisez x64, sinon vous utilisez un x86.

J'espère que cela t'aides.

Autres conseils

Lorsque j’ai examiné la question il y a un an, je suis arrivé à la conclusion que ce n’était pas possible.Il convient de noter que de nombreux fichiers MSI fournis par Microsoft sont disponibles dans des versions x86 et x64 distinctes – et vraisemblablement, ils ne fourniraient qu'un seul fichier si cela était possible.

J'ai eu un certain succès en utilisant deux fonctionnalités pour inclure sélectivement les deux ensembles de fichiers (dans des composants séparés bien sûr, avec leurs identifiants de fichiers individualisés !).

L'installation doit être marquée comme x32 pour être installée à la fois sur x32 et x64.Il s'installera toujours dans les répertoires x32 et sera largement traité comme une application 32 bits fonctionnant sous WOW.

À l'aide de la propriété VersionNT64, vous pouvez déterminer si une installation de Windows 64 est présente et installer sous condition les fichiers dont vous avez besoin.

Je ne sais pas dans quelle mesure cette fonctionnalité est disponible dans les projets d'installation de VS2008. J'utilise d'autres outils commerciaux pour configurer le programme d'installation de cette façon.Bien sûr, vous pouvez également utiliser Orca pour le faire, même s'il n'était pas trivial de le faire fonctionner avec des outils commerciaux et qu'Orca est beaucoup plus difficile.

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