Seite 1 von 1

Variable %ProgramFilesDir% unter 64-Bit Windows Systemen

Verfasst: 16 Dez 2009, 17:15
von mr.quickly
Hallo zusammen,

ich benutze in meinen Installationsscripten immer die Variable "%ProgramFilesDir%" um z.B. abzuprüfen ob das Programm schon installiert ist oder am ende auch installiert wurde.

Unter Windows 7 64-Bit ist das nun leider ein Problem. Es gibt nämlich neben dem normalen "C:\Program Files" auch ein Verzeichnis "Program Files (x86)". In letzterem befindet sich auch der Opsi Preloginloader. Wenn ich nun die Varibale "%ProgramFilesDir%" abfrage komme aber anstatt "C:\Program Files" "Program Files (x86)" dabei raus, weil Windows anscheinend eine 32-Bit Umgebung bereitstellt.

Habe es dann mal mit der Umgebungsvariable versucht:

Code: Alles auswählen

DefVar $Programfiles$
Set $Programfiles$ = EnvVar("Programfiles")
Wenn ich unter der Windows 7 der 64-Bit Version im cmd ein set eingebe dann kommt folgendes:

Code: Alles auswählen

PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 23 Stepping 6, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=1706
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
Eigentlich sollte Opsi also "C:\Program Files" auslesen, aber das klappt nicht.

Wie kann ich das trotzdem hin bekommen?

Wer kann mir da helfen?

Re: Variable %ProgramFilesDir% unter 64-Bit Windows Systemen

Verfasst: 20 Dez 2009, 16:12
von d.oertel
Hi,
ich benutze in meinen Installationsscripten immer die Variable "%ProgramFilesDir%" um z.B. abzuprüfen ob das Programm schon installiert ist oder am ende auch installiert wurde.
Der opsi-winst ist ein 32-Bit Programm.
Damit beziehen sich solche Variablen auf den 32-Bit Zweig des Filesystems also "C:\Program Files (x86)".
Ob das jetzt korrekt ist oder nicht hängt davon ab ob ich nach 32-Bit Software suche oder nach 64-Bit Software.
Die Files Funktionen des Winst lassen auch den Zugriff in den 64-Bit "C:\program files\" Bereich zu.

Härter wird es bei den Registryfunktionen. Diese werden prinzipiell auf dei 32 Bit Registry umgebogen.
Beispiele um trotzdem hier zugreifen zu können finden sich in:
http://download.uib.de/opsi3.4/testing/ ... 1.0-2.opsi.
Entscheidender Zugriffsweg ist dabei die 64 bit c:\windows\cmd64.exe welche während der preloginloader Installation
von c:\windows\system32\cmd.exe kopiert wird.

gruss
d.oertel

Re: Variable %ProgramFilesDir% unter 64-Bit Windows Systemen

Verfasst: 18 Jan 2010, 16:09
von mr.quickly
Die Files Funktionen des Winst lassen auch den Zugriff in den 64-Bit "C:\program files\" Bereich zu.
Wie kann ich das denn auslesen?

Ich brauche den 64-Bit %ProgramFiles% Pfad.

Re: Variable %ProgramFilesDir% unter 64-Bit Windows Systemen

Verfasst: 19 Jan 2010, 18:27
von d.oertel
Hi,

in der cmd64.exe die Umgebungsvariable %ProgramFiles% ausgeben und die Ausgabe einfangen.

gruss
d.oertel