Unterscheiden von x86 und x64 Anwendungen
Verfasst: 07 Mai 2010, 13:40
Hallo,
ich möchte gerne Dot Framenetwork 2.0 verteilen über OPSI. Kleiner Skripts zu erstellen funktioniert soweit schon. Ich möchte aber gerne jetzt schon berücksichtigen das irgendwann x64 Bit Systeme ins Haus kommen. Es gibt ja die Möglichkeit das OS abzufragen. Aber wie kann ich untescheiden ob es 32 oder 64 bit ist?
Das Skript wie ich es mal denke sieht so aus. Es ist Beta also verzeit mir Fehler. Zudem stehe ich eigentlich mit sowas auf Kriegsfuß.
Danke schon mal für eure Vorschläge und Hilfe.
Gruß
Michael
ich möchte gerne Dot Framenetwork 2.0 verteilen über OPSI. Kleiner Skripts zu erstellen funktioniert soweit schon. Ich möchte aber gerne jetzt schon berücksichtigen das irgendwann x64 Bit Systeme ins Haus kommen. Es gibt ja die Möglichkeit das OS abzufragen. Aber wie kann ich untescheiden ob es 32 oder 64 bit ist?
Das Skript wie ich es mal denke sieht so aus. Es ist Beta also verzeit mir Fehler. Zudem stehe ich eigentlich mit sowas auf Kriegsfuß.

Code: Alles auswählen
[Initial]
requiredWinstVersion >= "4.8.6"
LogLevel=2
; Log Errors in Logfile but don't abort:
ExitOnError=false
; Show syntax errors in the script:
ScriptErrorMessages=on
; Dont trace step by step through the script:
TraceMode=off
; Let started programs run in front of the winst window
StayOnTop=false
[Aktionen]
;-----------------------------------------------------------------
;- Variable fuer temporaeres Verzeichnis -
;-----------------------------------------------------------------
DefVar $TEMP$
Set $TEMP$ = EnvVar("TEMP")
DefVar $LogDir$
Set $LogDir$ = "%SystemDrive%\tmp"
DefVar $ProductId$
DefVar $MinimumSpace$
DefVar $InstallDir$
DefVar $ExitCode$
DefVar $NewExe$
DefVar $WinstRegKey$
DefVar $Flag$
DefVar $RebootRegVar$
DefVar $MsiFilex86$
DefVar $MsiFilex64$
DefVar $MstFilex$
; ----------------------------------------------------------------
; - Folgenden Abschnitt anpassen -
; ----------------------------------------------------------------
Set $ProductId$ = "Framenetwork 2.0"
Set $MinimumSpace$ = "50 MB"
Set $InstallDir$ = "%ProgramFilesDir%\Microsoft NET\net20sp1"
set $MsiFilex86$ = "%ScriptPath%\files_x86\vs_setup.msi"
Set $MsiFilex64$ = "%ScriptPath%\files_x64\vs_setup.msi"
Set $MstFile$ = "/passive /qb! /norestart"
DefVar $OS$
Set $OS$=EnvVar("OS")
DefVar $MinorOS$
Set $MinorOS$=GetNTVersion
DefVar $WinstRegKey
DefVar $RebootRegVar
Set $WinstRegKey = "HKLM\SOFTWARE\opsi.org\winst"
Set $Flag$ = GetRegistryStringValue("["+$WinstRegKey+"] "+"RebootSpFlag")
; ----------------------------------------------------------------
; - x86 Programm -
; ----------------------------------------------------------------
if ($MinorOS$="x86"
if not ($Flag$ = "1")
;=========================
; Anweisungen vor Reboot
; Message at install time:
Message "Beginne Installation von "+$ProductId$+" ..."
if not(HasMinimumSpace ("%SYSTEMDRIVE%", $MinimumSpace$))
LogError "Nicht genügend Festplattenplatz auf "%SYSTEMDRIVE%" . "+$MinimumSpace$+" auf C: fuer "+$ProductId$+" erforderlich."
isFatalError
; Bearbeitung beenden und Produktschalter auf failed setzen
else
;show product picture
ShowBitmap /3 "%scriptpath%\net20.png" "Net2.0"
;Message at install time:
Message "Installiere "+$ProductId$+" ..."
;start setup program
Winbatch_install_x86
endif
; Reboot initialisieren ...
Message "Bereite Neustart vor ...."
Set $Flag$ = "1"
Registry_SaveRebootFlag
ExitWindows /ImmediateReboot
else
;=========================
; Anweisungen nach Reboot
; Rebootflag zurücksetzen
Set $Flag$ = "0"
Registry_SaveRebootFlag
endif ;x86
; ----------------------------------------------------------------
; - x64 Programm -
; ----------------------------------------------------------------
if ($MinorOS$="x64"
if not ($Flag$ = "1")
;=========================
; Anweisungen vor Reboot
; Message at install time:
Message "Beginne Installation von "+$ProductId$+" ..."
if not(HasMinimumSpace ("%SYSTEMDRIVE%", $MinimumSpace$))
LogError "Nicht genügend Festplattenplatz auf "%SYSTEMDRIVE%" . "+$MinimumSpace$+" auf C: fuer "+$ProductId$+" erforderlich."
isFatalError
; Bearbeitung beenden und Produktschalter auf failed setzen
else
;show product picture
ShowBitmap /3 "%scriptpath%\net20.png" "Net2.0"
;Message at install time:
Message "Installiere "+$ProductId$+" ..."
;start setup program
Winbatch_install_x64
endif
; Reboot initialisieren ...
Message "Bereite Neustart vor ...."
Set $Flag$ = "1"
Registry_SaveRebootFlag
ExitWindows /ImmediateReboot
else
;=========================
; Anweisungen nach Reboot
; Rebootflag zurücksetzen
Set $Flag$ = "0"
Registry_SaveRebootFlag
endif ;x64
endif
[Registry_SaveRebootFlag]
openKey [$WinstRegKey$]
set "RebootFlag" = "$Flag$"
[Winbatch_install_x86]
$MsiFilex86$ $MstFile$
[Winbatch_install_x64]
$MsiFilex64$ $MstFile$
Gruß
Michael