[Gelöst] ExitWindows /ImmediateReboot

Antworten
hawaii
Beiträge: 77
Registriert: 03 Dez 2013, 13:32

[Gelöst] ExitWindows /ImmediateReboot

Beitrag von hawaii »

Hola,

ich habe mir erfolgreich ein Paket für Office 2000 geschnürt und ändere am Ende der Installation einen Registry Eintrag damit unter Windows 7 64-bit die Rechtschreibprüfung funktioniert.
Das funktioniert auch alles super, allerdings benötige ich am Ende der Installation einen Neustart, sonst funktioniert die Rechtschreibprüfung nicht sauber.
Nachdem ich im Handbuch das Kapitel über ExitWindows gelesen habe, habe ich das so in mein Skript eingebaut und der Reboot wird auch ausgeführt, allerdings wartet OPSI vor dem Reboot 5 Minuten....
Also hab ich mir die verschiedenen Optionen von ExitWindows angeschaut und dachte ExitWindows /ImmediateReboot ist meine Lösung....allerdings wartet OPSI auch hier 5 Minuten....

Kann mir jemand sagen wie ich diese Zeit beeinflussen kann? Oder mach ich irgendetwas falsch?

Danke und Grüßle :-)

Hier mal mein setup.ins Skript:

Code: Alles auswählen

; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib
; and published under the Terms of the General Public License.
; credits: http://www.opsi.org/credits/
 
[Actions]
requiredWinstVersion >= "4.10.8.6"
 
DefVar $MsiId$
DefVar $UninstallProgram$
DefVar $LogDir$
DefVar $ProductId$  
DefVar $MinimumSpace$
DefVar $InstallDir$
DefVar $ExitCode$
DefVar $LicenseRequired$
DefVar $LicenseKey$
DefVar $LicensePool$
DefVar $Flag$
DefVar $WinstRegKey$
DefVar $RebootRegVar$
 
Set $LogDir$ = "%SystemDrive%\tmp"
Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst"
Set $Flag$ = GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag")
 
; ----------------------------------------------------------------
; - Please edit the following values                             -
; ----------------------------------------------------------------
;$ProductId$ should be the name of the product in opsi
; therefore please: only lower letters, no umlauts, 
; no white space use '-' as a seperator
Set $ProductId$       = "office2000"
Set $MinimumSpace$    = "200 MB"
; the path were we find the product after the installation
Set $InstallDir$      = "%ProgramFiles32Dir%\office2000"
Set $LicenseRequired$ = "false"
Set $LicensePool$     = "p_" + $ProductId$
; ----------------------------------------------------------------

if not ($Flag$ = "1")
	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 "%ScriptPath%\" + $ProductId$ + ".jpg" $ProductId$
 
		if FileExists("%ScriptPath%\delsub32.ins")
			comment "Start uninstall sub section"
			Sub "%ScriptPath%\delsub32.ins"
		endif
 
		Message "Installing " + $ProductId$ + " ..."
 
		comment "Start setup program..."
		Winbatch_install
		Sub_check_exitcode

		comment "Patch Registry to enable spell checking..."
		Registry_install /64Bit

		comment "Reboot Windows to make sure spell checking is working..."
		Set $Flag$ = "1"
		Registry_SaveRebootFlag /32Bit
		ExitWindows /ImmediateReboot
 
	endif

else
	Set $Flag$ = "0"
	Registry_SaveRebootFlag /32Bit

endif

[Registry_SaveRebootFlag]
openKey [$WinstRegKey$]
set "RebootFlag" = "$Flag$"
 
[Winbatch_install]
msiexec /i %scriptpath%\DATA1.msi TRANSFORMS=%scriptpath%\my.MST PIDKEY=XXXXXXXXXXXXXXXXXXXXXXXX /qn

[Registry_install]
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\D98D8386D2CC2D112B0600008FF17576]
set "704010001E872D116BF00006799C897E" = "C:\PROGRA~2\COMMON~1\MICROS~1\Proof\MSSP3GEA.LEX"
 
[Sub_check_exitcode]
comment "Test for installation success via exit code"
set $ExitCode$ = getLastExitCode
; informations to exit codes see
; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx
; http://msdn.microsoft.com/en-us/library/aa368542.aspx
if ($ExitCode$ = "0")
	comment "Looks good: setup program gives exitcode zero"
else
	comment "Setup program gives a exitcode unequal zero: " + $ExitCode$
	if ($ExitCode$ = "1605")
		comment "ERROR_UNKNOWN_PRODUCT	1605	This action is only valid for products that are currently installed."
		comment "Uninstall of a not installed product failed - no problem"
	else
		if ($ExitCode$ = "1641")
			comment "looks good: setup program gives exitcode 1641"
			comment "ERROR_SUCCESS_REBOOT_INITIATED	1641	The installer has initiated a restart. This message is indicative of a success."
		else
			if ($ExitCode$ = "3010")
				comment "looks good: setup program gives exitcode 3010"
				comment "ERROR_SUCCESS_REBOOT_REQUIRED	3010	A restart is required to complete the install. This message is indicative of a success."
			else
				logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$
				isFatalError
			endif
		endif
	endif
endif
Zuletzt geändert von hawaii am 22 Jan 2014, 16:02, insgesamt 2-mal geändert.
dkoch
Beiträge: 309
Registriert: 25 Nov 2011, 14:03

Re: ExitWindows /ImmediateReboot

Beitrag von dkoch »

Hi

Code: Alles auswählen

ExitWindows /RebootWanted
ist die richtige Lösung.
Gewartet wird nur wenn ein Benutzer angemeldet ist. Wenn die Installation auf der Anmeldemaske läuft passiert dies nicht. Das ist um dem Benutzer Zeit zu geben seine Programme sauber zu beenden und seine Änderungen zu speichern. Wenn du das wirklich umgehen willst tu das:

Code: Alles auswählen

DosInAnIcon_Reboot 

[DosInAnIcon_Reboot]
shutdown -r -t 5
Liebe Grüße,
Daniel
hawaii
Beiträge: 77
Registriert: 03 Dez 2013, 13:32

Re: ExitWindows /ImmediateReboot

Beitrag von hawaii »

Hallo Daniel,

Danke für deine schnelle Antwort.

ExitWindows /RebootWanted funktioniert tatsächlich genau so wie erwartet, wenn kein User angemeldet ist. Ich hatte das zwar als
erstes getestet allerdings nur mit angemeldetem User.
Aus der Doku war mir das nicht ersichtlich, deswegen hatte ich mich an ExitWindows /RebootImmediate gehalten.

Passt auf jeden Fall und da es in erster Linie um die Softwareverteilung bei OS Neuinstallation geht ist zu dieser Zeit sowieso noch niemand angemeldet.

Auch Danke für den anderen Tipp, den werde ich bei Gelegenheit mal testen.

Grüßle,
Kai
Antworten