Unterscheiden von x86 und x64 Anwendungen

Antworten
COMaction
Beiträge: 130
Registriert: 10 Aug 2009, 19:33

Unterscheiden von x86 und x64 Anwendungen

Beitrag von COMaction »

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ß. :)

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$
Danke schon mal für eure Vorschläge und Hilfe.

Gruß

Michael
p.grass
Beiträge: 44
Registriert: 04 Sep 2009, 14:31

Re: Unterscheiden von x86 und x64 Anwendungen

Beitrag von p.grass »

Hallo Michael,

schau mal im winst Handbuch (http://download.uib.de/opsi_stable/doku/) nach "GetSystemType", sollte Seite 36 sein. Damit sollte möglich sein, was du suchst.

Gruß p.grass
Antworten