2010-07-12 23 views
1

Nous avons une grande gamme de produits qui comprennent:Comment puis-je utiliser un projet VS Setup pour installer le code "Any CPU" correctement sur Windows 32 bits ou 64 bits?

  • applications de bureau écrit en VB6.
  • Applications de bureau écrites en .NET.
  • Services Windows écrits en .NET.
  • Applications Web ASP.NET écrites en .NET.
  • Services ASMX et WCF écrits en .NET.

Tout le code .NET est écrit en VS2008, en ciblant .NET 3.5 et "Any CPU". Nous pourrions cibler des processeurs spécifiques, mais préférerions ne pas le faire car cela causerait des problèmes plus bas dans l'arbre de dépendance. Nous ne sommes pas encore en mesure de déplacer quoi que ce soit sur .NET 4.0, même si cela deviendra une option plus tard.

Toutes les applications partagent quelques clés de registre essentielles. Nous avons arrondi le problème de redirection de Registre en ayant le code .NET toujours regarder la vue de Registre 32 bits.

Une partie du code .NET parle aux DLL VB6 via COM interop, mais cela est très limité et nous pouvons facilement supprimer cette dépendance (commenter maintenant, réécrire dans .NET plus tard).

Toutes les applications et tous les services Web sont conçus pour être hébergés dans IIS. Toutes les versions à partir de la version 5.1 doivent être prises en charge.

Nos machines virtuelles de construction exécutent actuellement Windows XP (32 bits). Nous pourrions en créer de nouveaux si nécessaire.

Mon devoir est de m'assurer que tout fonctionne sans problèmes sur Windows 64 bits (toutes les versions). J'ai actuellement des problèmes avec les projets d'installation .NET, qui sont tous écrits en utilisant les modèles de projet d'installation VS2008.

Même si le code source est Any CPU, les projets d'installation n'ont pas cette fonctionnalité. Vous devez définir la propriété TargetPlatform sur un processeur. Ce n'est pas très utile. Ne pouvons-nous pas avoir un setup.exe qui installe en 32 bits sur un O/S 32 bits et en 64 bits sur un O/S 64 bits? Si j'étais un utilisateur final installant les applications, je ne saurais pas quel programme d'installation exécuter.

Répondre

1

J'ai depuis étudié les projets de configuration VS2010, WiX et InstallShield, et tous se comportent de la même manière. Je vais devoir écrire cette question comme "pas possible". J'ai l'intention de faire soit:

  • Juste fournir des installateurs 32 et 64 bits séparés.
  • Ecrivez un fichier de chargement séparé ou un fichier exe pour détecter le bitness et exécutez le programme d'installation approprié.
0

J'ai une application qui décide quelles DLL à charger à l'exécution, y compris si les DLL 32 ou 64 bits. Je me suis retrouvé avec mon vieil ami setup2go pour y arriver. Peu importe ce qui ne pourrait pas obtenir des DLL 64 bits dans l'installeur x86, à moins de le changer en x64 mais ce n'est pas ce que je voulais, il devrait également s'installer sur des systèmes 32 bits, où les DLL 64 bits prendront un peu d'espace .

Donc juste google setup2go, c'est possible, peut-être pas avec MSI.