2010-11-08 40 views
4

J'ai un installateur (projet de configuration Visual Studio) qui uses DIFxApp and an Orca transform to install drivers. Le problème est qu'il existe deux modules de fusion DIFxApp - un pour x86 et un pour x64. Si je les référence tous les deux, l'installation ne fonctionne que sur des machines 64 bits, tandis que le référencement de la version x86 me permet d'installer sur des machines 32 bits.Programme d'installation qui choisit le MSI en fonction de l'architecture du processeur (x86 32 bits, x64 64 bits, etc)

Il semble que la seule solution consiste à créer deux MSI (un pour x86 et un pour x64), chacun référençant le module de fusion correct. Ma question est comment dois-je créer un programme d'installation qui choisit quel MSI installer en fonction du processeur de la machine cible?

J'ai travaillé avec NSIS un peu, donc il pourrait être plus facile de suivre cette route. Les autres possibilités sont Inno-Setup et dotNetInstaller.

Des questions similaires (mais avec des réponses inadéquates):

+0

Pourquoi ne pas laisser l'utilisateur choisir le MSI? Il est assez courant dans le monde Windows d'avoir des programmes d'installation séparés pour les versions 32 bits et 64 bits. –

+0

@ 0xA3: Parce que le client veut un installateur unifié. De plus, je pense qu'il vaut mieux automatiser tout ce qui est possible pour que l'utilisateur fasse le moins possible pour l'installer. – Pat

Répondre

0

Que diriez-vous de faire un petit programme (lanceur) qui détectent le type d'os (64 0r 32 bits, devrait être facile) . Le petit programme lance ensuite le bon installateur en fonction du résultat de la détection. Le programme ne devrait avoir aucune fenêtre et a la même icône que le programme d'installation. Donnez au client les trois fichiers, installer.exe (le programme), inst32.msi et inst64.msi. Si c'est trop pour votre client, il suffit de les compresser en un zip auto-extractible qui lance automatiquement le fichier installer.exe.

+0

Oui, c'est une solution valable, mais c'est un problème qui a été résolu par d'autres et je préfère ne pas réinventer la roue. – Pat

+0

Dans ce cas, je recommande inno setup, très facile à utiliser http://www.jrsoftware.org/isinfo.php. Personnellement, je pense que la configuration d'inno est plus facile que nsis. – arifwn

+0

J'ai installé et regarde IS est maintenant. Je suis prêt à l'essayer, mais je ne sais pas par où commencer. Une bonne réponse à ma question initiale passerait explicitement par le choix d'un fichier ou d'un autre basé sur le processeur. – Pat

19

Si vous décidez d'aller avec NSIS:

!include "x64.nsh" 
${If} ${RunningX64} 
    MessageBox MB_OK "running on x64" 
${Else} 
    MessageBox MB_OK "running on x86" 
${EndIf}