Sofortiger Reboot während Installation mehrerer Anwendungen

Antworten
Nils
Beiträge: 185
Registriert: 16 Sep 2011, 08:59

Sofortiger Reboot während Installation mehrerer Anwendungen

Beitrag von Nils »

Hallo zusammen,

ich versuche gerade ein neues OPSI-Paket zu erstellen. Die Installation erfordert, dass zuvor sowohl die Java Runtime also auch der Informix-Client installiert ist. Theoretisch klapp es auch wunderbar. Aber... Ich habe sowohl nach der Installation des Informix-Client als auch der des JRE einen Reboot vorgesehen. Installiere ich die Anwendungen einzeln, so wird dieser Neustart nach der jeweiligen Installation durchgeführt. Sobald ich jedoch das JRE und den Informix-Client zur selben Zeit auf "setup" stelle, so dass sie direkt hintereinander installiert werden, wird nach der ersten Installation kein Neustart durchgeführt.

Das Problem dabei ist, dass bei beiden Installationen die Path-Variable des Systems erweitert wird. Dies wird jedoch leider erst nach einem Neustart wirksam. Dadurch, dass der Pfad während der ersten Installation angepasst, der PC dann jedoch nicht neu gestartet wird, überschreibt die zweite Installation leider die Variable wieder. Warum auch immer. :?: Ich dachte, er würde den aktuellen Path-Eintrag (der ja bereits ergänzt ist) aus der Registry lesen und verwenden. :(

Was muss ich machen, damit auch bei der Kombination mehrerer Installationen ein angeforderter Neustart sofort durchgeführt wird? Nicht erst am Ende aller Installationen.
Solltet ihr weitere Informationen benötigen, gebt mir bitte kurz Bescheid, welche Infos noch fehlen.

Vielen Dank im Voraus für jeden Tipp und jede Hilfe.
Ich wünsche euch noch einen schönen restlichen Arbeitstag und ein erholsames Wochenende.
Nils
karni
Beiträge: 193
Registriert: 08 Okt 2009, 14:07

Re: Sofortiger Reboot während Installation mehrerer Anwendun

Beitrag von karni »

Einfach die Variable fix am Ende beide Installationen konfigurieren.

Code: Alles auswählen

DefVar $Path$
set $Path$ = EnvVar ("Path")

Registry_install

[Registry_install]
openkey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\control\Session Manager\Environment]
set "Path"="$Path$;die neue Pfade von Informix;die neue Pfade von Java "
Oder so was mit reboot zwischen die zwei Installationen. Schau die Logik mit Registry Flag. Ich bin kein Etwickler. das Code ist nicht das beste:)

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]
DefVar $TEMP$
DefVar $ProductId$
DefVar $MinimumSpace$
DefVar $NewExe$
DefVar $InstallDir$
DefVar $ExitCode$
DefVar $RebootFlag$
DefVar $WinstRegKey$


; This should be edited
set $ProductId$ = "Acrobat Reader"
set $MinimumSpace$ = "100 MB"
set $InstallDir$="%ProgramFilesDir%\"+$ProductId$
set $NewExe$=$InstallDir$+"\"+$ProductId$+".exe"
Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst"


Set $TEMP$ = EnvVar("TEMP")

; Message at install time:
Message "Installing "+$ProductId$+" ..."

if not(HasMinimumSpace ("%SYSTEMDRIVE%", $MinimumSpace$))
        LogError "Not enough space on %SYSTEMDRIVE%: . "+$MinimumSpace$+" on Drive %SYSTEMDRIVE%: needed for "+$ProductId$+"."
        isFatalError
        ; stop process and set installation status to failed
else
        comment "show product picture"
        ShowBitmap /3 "%scriptpath%\acrobat_reader.png" $ProductId$

        ;Message at install time:
        Message "Installing "+$ProductId$+" ..."

        Registry_create

        Set $RebootFlag$ = GetRegistryStringValue("["+$WinstRegKey$+"] "+"AR9")

if  ( $RebootFlag$ = "0" )
        comment "start setup program"
        Winbatch_install
        sub_check_exitcode

        LinkFolder_install

        Set $RebootFlag$ = "1"
        Registry_SaveRebootFlag
        ExitWindows /ImmediateReboot
endif

        Winbatch_patch
        sub_check_exitcode

        Files_startm
        Set $RebootFlag$ = "0"
        Registry_SaveRebootFlag

        Registry_delete

endif

[Registry_create]
openKey [$WinstRegKey$]
add "AR9" = "0"

[Registry_SaveRebootFlag]
openKey [$WinstRegKey$]
set "AR9" = "$RebootFlag$"

[Registry_delete]
openKey [$WinstRegKey$]
deletevar "AR9"

[Winbatch_install]
"%scriptpath%\AdbeRdr930_en_US.exe" /sPB /rs /l /msi /qb- /norestart EULA_ACCEPT=YES DISABLE_AIR_SHARE=1

[LinkFolder_install]
set_basefolder common_desktopdirectory
set_subfolder ""
delete_element "Adobe Reader 9"

[Files_startm]
copy "%CommonStartMenuPath%\Programs\Adobe Reader 9.lnk" "%CommonStartMenuPath%\Programs\Office"\.
delete "%CommonStartMenuPath%\Programs\Adobe Reader 9.lnk"

[Winbatch_patch]
msiexec /p "%scriptpath%\AdbeRdrUpd931_all_incr.msp" REINSTALL=ALL REINSTALLMODE=omus /qb
Nils
Beiträge: 185
Registriert: 16 Sep 2011, 08:59

Re: Sofortiger Reboot während Installation mehrerer Anwendun

Beitrag von Nils »

Hallo karni,

vielen Dank für deine schnelle Antwort. Ich versuche es mit dem Reboot zwischen den beiden Installationen. So, wie du es auch vorschlägst. Ich habe mich da am Handbuch orientiert.
Mein Code sieht an der Stelle so aus:

Code: Alles auswählen

[Actions]
...
DefVar $Path$
set $Path$ = EnvVar ("Path")
...

	if (($INST_SystemType$ = "x86 System") and ($INST_architecture$ = "system specific")) or ($INST_architecture$ = "both") or ($INST_architecture$ = "32 only")
		Message "Installing " + $ProductId$ + " 32 Bit..."
		DefVar $Flag$
		DefVar $WinstRegKey$
		DefVar $RebootRegVar$
		Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst"
		Set $Flag$ = GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag")
		if not ($Flag$ = "1")
			;=========================
			comment "Anweisungen vor Reboot"
			; Anweisungen vor Reboot
			comment "Start setup program"
			Winbatch_install_32
			Sub_check_exitcode

			Registry_PathPatch

			comment "Patch Registry"
			Registry_install		
			; Reboot initialisieren
			Set $Flag$ = "1"
			Registry_SaveRebootFlag
			ExitWindows /ImmediateReboot
		else
			;=========================
			; Anweisungen nach Reboot
			; Rebootflag zurücksetzen
			Set $Flag$ = "0"
			Registry_SaveRebootFlag
		endif
	endif

[Registry_SaveRebootFlag]
openKey [$WinstRegKey$]
set "RebootFlag" = "$Flag$"

[Registry_PathPatch]
openkey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\control\Session Manager\Environment]
set "Path" = "$Path$"
supp "Path"; "$InstallDir32$\jre6\bin"

Und wie schon geschrieben: Wenn ich das Paket einzeln installieren lasse, wird der Neustart sofort durchgeführt.
Kann es sein, dass bei der "Kopplung" also dem Nacheinander-Installieren von mehreren Paketen eine Rebootanforderung "gemerkt" und ans Ende aller Installationen "verschoben" wird?

Vielen Dank im Voraus für weitere Tipps und Hilfe.
Nils
karni
Beiträge: 193
Registriert: 08 Okt 2009, 14:07

Re: Sofortiger Reboot während Installation mehrerer Anwendun

Beitrag von karni »

Ich glaube nicht. OPSI merkt sich die Restarts nicht. Das Paket bleibt einfach auf "setup".
Wenn OPSI ein mal mit der Installation von einem Paket angefangen hat,soll dasselbe Paket auch nach einem Restart als erster an der Reihe sein.
OPSI benutzt priority model, um Installationsreihenfolge zu ermitteln.
Um 100% sicher zu sein, kannst du einfach priority fürs Paket konfigurieren.
Nils
Beiträge: 185
Registriert: 16 Sep 2011, 08:59

Re: Sofortiger Reboot während Installation mehrerer Anwendun

Beitrag von Nils »

Hallo karni,

sorry, dass ich erst heute dazu komme, zu antworten und danke für deine Nachricht.
Bei dem "Haupt"-Paket habe ich angegeben, dass beide anderen, also der Adobe Reader und der Informix-Client, "preinstalled" sein müssen. Oder meinst du etwas Anderes mit "Priority"?
Ich war davon ausgegangen, dass ich innerhalb eines Paketes einen Neustart anfordern kann und dieser dann auch sofort ausgeführt wird, wenn er mit "ExitWindows /ImmediateReboot" angegeben ist. Bevor(!) das nächste Paket installiert wird. So muss ich wohl noch etwas weiter forschen. ;-)

Trotzdem nochmals vielen Dank und einen erfolgreichen Start in die neue Woche.
Nils
Antworten