Variable %ProgramFilesDir% unter 64-Bit Windows Systemen

Antworten
mr.quickly
Beiträge: 157
Registriert: 11 Nov 2008, 15:17

Variable %ProgramFilesDir% unter 64-Bit Windows Systemen

Beitrag 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?
Viele Grüße

Thomas S.
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3327
Registriert: 04 Jun 2008, 14:27

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

Beitrag 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


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


mr.quickly
Beiträge: 157
Registriert: 11 Nov 2008, 15:17

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

Beitrag 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.
Viele Grüße

Thomas S.
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3327
Registriert: 04 Jun 2008, 14:27

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

Beitrag von d.oertel »

Hi,

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

gruss
d.oertel


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


Antworten