Est-il possible d'avoir tout ou partie de PATH
la variable d'environnement spécifique au type d'image du processus en cours (32bit / 64bit)? Lorsque j'exécute une application à partir de cmd.exe 64 bits, je voudrais qu'elle choisisse la version 64 bits de la bibliothèque OpenSSL, tandis que lorsque j'exécute une application à partir de cmd.exe 32 bits, je voudrais qu'elle choisisse la version 32 bits de la bibliothèque OpenSSL.
14
echo %programfiles%
affiche un chemin différent selon le type de cmd.exe à partir duquel il est exécuté, maiswhere ssleay32.dll
dans les deux types de cmd.exe (32 bits et 64 bits), vous ne pouvez pas trouver cette DLL et affiche desINFO: Could not find files for the given pattern(s).
idées?La réponse (cochée à droite) fournie par romka est simple et élégante, mais ne fonctionne malheureusement pas (au moins sur Windows 7 et Windows 8 64 bits, je n'ai pas poussé plus loin mon test).
Le problème vient du fait que la variable système% PATH% ne développe pas toujours les autres variables env: elle fonctionne avec% SYSTEMDRIVE% par exemple, mais malheureusement pas pour% PROGRAMFILES%. Wikipedia suggère que ce comportement vient du niveau d'indirection (% SYSTEMDRIVE% ne fait pas référence à une troisième variable env).
La seule solution que j'ai trouvée est d'utiliser la magie du redirecteur de système de fichiers et les répertoires System32 / SysWoW64, comme suggéré dans les commentaires.
Pour éviter le déploiement direct de DLL dans le répertoire Windows, qui est généralement difficile à maintenir, on peut déployer à la place un lien logiciel vers un répertoire personnalisé (fonctionne sur Windows Vista et les versions ultérieures de Windows):
Soit dit en passant, désolé de ne pas avoir commenté directement les messages pertinents: actuellement pas assez de réputation sur mon compte pour ce faire.
la source
Oui, c'est absolument possible. Écrivez simplement trois fichiers .bat. Le premier devrait ressembler à ceci:
Le deuxième et le troisième fichier .bat sont fondamentalement les mêmes, sauf qu'ils diffèrent par leur nom. Le premier sera appelé x86.bat le second ia64.bat et ils sont placés dans un dossier appelé bin qui se trouve au-dessus du premier fichier bat. Vous aurez ceci:
Le contenu des deuxième et troisième fichiers .bat devrait ressembler à ceci:
Vous pouvez créer un lien vers le premier fichier .bat qui aura les paramètres suivants:
Cible:% comspec% / k OPTION "PATH \ first.bat" | Où OPTION est x86 ou ia64
Début dans: CHEMIN | Où PATH est le CHEMIN vers votre first.bat
Le script est le script simplifié que Microsoft utilise pour démarrer la bonne ligne de commande pour leur environnement Visual Studio. Vous pouvez simplement étendre ces scripts à N environnements. En ajoutant plus de fichiers .bat pour différents environnements et en éditant le premier.bat avec plus d'options et d'instructions goto. J'espère que ça s'explique.
Et j'espère que Microsoft ne me poursuivra pas pour avoir utilisé leur script.
ÉDITER:
Ah je pense que je vous ai un peu mal compris. Pour la ligne cmd 32 bits, le lien doit être créé comme suit:
Cible:% windir% \ SysWoW64 \ cmd.exe "PATH \ first.bat" x86
EDIT2:
Essayez quelque chose comme:
la source
%ProgramFiles%
variable. (Quote: Le% ProgramFiles% lui-même dépend si le processus demandant la variable d'environnement est lui-même 32 bits ou 64 bits (cela est dû à la redirection Windows 64 bits sur Windows). En.wikipedia.org/wiki/ … )Je voulais juste résumer la réponse que j'ai obtenue en suivant les liens fournis dans la réponse de Baptiste Chardon. En utilisant l'
mklink
outil de ligne de commande pour créer un lien symbolique de répertoire versC:\Windows\system32
et depuisC:\Windows\SysWOW64
, chacun ayant le même nom (bien que des cibles différentes), vous pouvez ensuite simplement ajouter celui-ciC:\Windows\system32
à laPath
variable d'environnement. Par exemple:la source
J'ai eu ce problème et la réponse est la suivante:
Le chemin de votre variable système sur les machines 64 bits est
c:\progra~2
. Vous devez avoir un chemin sans espace pour votre variable environnementale, sinon le système ne lira pas plus loinC:\programs
.Sur nos machines 32 bits, les programmes d'entreprise variables d'environnement sont
c:\program files
et sur ceux 64 bits, c'estc:\progra~2
. Nous définissons ensuite nos raccourcis pour les utilisateurs sur%companyprograms%\...
Vous pouvez le faire via la stratégie de groupe ou par script.
la source
Comme romka l'a indiqué dans le suivi, la réponse simple est le répertoire SysWOW64.
Heureusement, les installateurs de Shining Light productions s'en occupent pour vous. Il suffit d'exécuter les programmes d'installation 32 bits et 64 bits et de choisir de copier les .DLL dans le répertoire "System" de la fenêtre et le répertoire approprié est choisi pour les .DLL (c'est-à-dire que les 64 bits .DLL vont dans System32 et les 32 bits .DLL vont dans SysWOW64.
Une fois que j'ai fait cela, mes applications 32 bits trouvent les .DLL 32 bits et mes applications 64 bits trouvent les .DLL 64 bits.
la source