; #SCRIPT# --------------------------------------------------------------------------------------------------------------------------------------------
;	Script Name		:	Install (Opera).au3
;	Beschreibung	:	Script 2 zum installieren von "Opera 1X.XX, der Browser-Erweiterungen und zum einrichten der Programme.
;
;	Includes		:	<_EigeneFunktionen.au3>
;	AutoIt Version	:	3.3.8.1
;	Script Autor	:	Dietmar Brück
;	Anmerkung(en)	:	Die Erweiterung "Adblock Plus" muss eventuel sofort manuell deaktiviert werden, weil sonst der
;						Internetzugang extrem langsam wird !
;						Es wird die 32-Bit-Version von Opera installiert, da mit der 64-Bit-Version angeblich einige Internetseiten
;						nicht richtig funktionieren.
;						Wird der Installpfad der Programme "KompoZer" oder "MS-Office" geändert, so muss auch dieses Script angepasst werden !
;						Das Programm ist für Windows 7, 32- und 64-Bit geeignet.
;
;								! ! ! Script für Windows XP 32-Bit, Windows 7 64-Bit und Windows 10 64-Bit ! ! !
; -----------------------------------------------------------------------------------------------------------------------------------------------------

; Sonstiges für dieses Script festlegen.
#RequireAdmin

; Dateien einbinden.
#include-once
#include <_EigeneFunktionen.au3>

; Optionen für dieses Script festlegen.
Opt("MustDeclareVars", 1)

; Variablen deklarieren.
Global $Array[300], $BS, $Datei[15], $Datei_Name, $Erweiterung, $Erweiterung_Pfad, $Fenster_Handle, $Fenster_ID, $Fenster_Text, $Fenster_Titel
Global $Install_Pfad, $Install_Programm_Pfad, $Install_Sonstiges_Pfad, $LV, $Pfad, $Schluessel, $ScriptTesten, $Setup_Programm, $Suchhandle, $WUID_Pfad

; Die Funktion zum ermitteln des erforderlichen Betriebssystems aufrufen.
$BS = _Betriebssystem(134, 1)

; Einigen Variablen Werte zuweisen.
$ScriptTesten = False ; Variable zum testen des Scripts (True = Testen, False = Nicht testen).

$Install_Pfad = @ProgramFilesDir & "\Opera" ; Der Install-Pfad darf nicht geändert werden, da sonst die Pfade zum Übertragen der Einstellungen usw. auch entsprechend angepasst werden müssen !
Select
	Case $BS = 1
		$Erweiterung_Pfad = @UserProfileDir & "\Lokale Einstellungen\Anwendungsdaten\Opera\Opera\widgets"

	Case $BS = 3 Or $BS = 4
		$Erweiterung_Pfad = @UserProfileDir & "\AppData\Local\Opera\Opera\widgets"
EndSelect
$Install_Programm_Pfad = @HomeDrive & "\Opera\Programm"
$Install_Sonstiges_Pfad = @HomeDrive & "\Opera\Sonstiges"

; Die Funktion zum anzeigen und auswerten der Fragen vor der Installation und des Wartehinweis aufrufen.
InstallFragenWartehinweis($BS, $Install_Pfad, -1)

; Die Funktion zum testen des Scripts aufrufen.
_ScriptTesten($ScriptTesten)

; Das "Adobe Flash Player Plugin" installieren (das Plugin wird immer installiert, damit immer die neuste Version verwendet wird).
; Den ToolTip anzeigen.
ToolTip(@LF & 'Das "Adobe Flash Player Plugin" wird nun installiert' & @LF & @LF & "          Bitte warten Sie: (Dauer: c.a. 0,1 Min.)", @DesktopWidth * 0.36, @DesktopHeight * 0.6, "              Adobe Flash Player", 1, 4)
;  Das Installationsprogramm des "Adobe Flash Player Plugin" mit Silent Schalter aufrufen.
RunWait($Install_Programm_Pfad & "\Install_Flash_Player_Plugin.exe -install -au 2")
;	Optionen für den Schalter "-au" (der Schalter funktioniert nur mit dem Schalter "-install" der alle Fenster unterdrückt):
;		-au 0	Zulassen, dass Adobe Updates installiert (empfohlen)		[Standard].
;		-au 1	Benachrichtigen, um Updates zu installieren.
;		-au 2	Nie nach Updates suchen (nicht empfohlen).
; Den ToolTip wieder ausschalten.
ToolTip("")

; Die Funktion zum löschen des eventuell noch vorhandenen Installationsordners aufrufen.
_OrdnerLoeschen($Install_Pfad & "\", 1)

; Das Installationsprogramm von "Opera 1X.XX" mit Silent Schalter aufrufen.
$Setup_Programm = _WildcardNamen($Install_Programm_Pfad, "Opera_*_int_Setup.exe", 1)
Select
	Case $BS = 1
		Run($Install_Programm_Pfad & "\" & $Setup_Programm & " /silent /launchopera 0 /startmenushortcut 1 /desktopshortcut 0 /quicklaunchshortcut 0 /setdefaultbrowser 1")

	Case $BS = 3 Or $BS = 4
		Run($Install_Programm_Pfad & "\" & $Setup_Programm & " /silent /launchopera 0 /startmenushortcut 0 /pintotaskbar 0 /desktopshortcut 0 /setdefaultbrowser 1")
EndSelect

; Die Funktion zum warten auf das erste Fenster des Installationsprogramms (das Fenster des Extraktionsprogramms oder das Fenster des Installationsprogramm) aufrufen.
$Fenster_Titel = "Opera" ; Der Titel gilt auch für das folgende Fenster 1/1:1.
_StartVerzoegerungEX("[REGEXPTITLE:(Extracting)]", "", $Fenster_Titel, "", "A", 1, 20)

; Eintragungen usw. in Fenster 1/1:1 (Opera 11.XX - Installationsprogramm).
$Fenster_ID = "1/1:1"
;	Anpassungen:
;		Sprache			[Deutsch].
;		Installation	[Für alle Benutzer dieses Computers].
;		Verzeichnis		[C:\Programme\Opera].
;			Auf dem Desktop					[Standard].
;			Im Startmenü					[Standard].
;			Programm an Taskleiste anheften	[Standard].
;		Opera als Standardbrowser verwenden		[Standard].
$Fenster_Handle = _FensterAktivieren($Fenster_Titel, "", $Fenster_ID, 1)
; Die Optionen wurden mit den Silent Schaltern ausgewählt.
_Unterbrechen($ScriptTesten)
; Die Schleife um auf das Ende der Installation zu warten, starten.
Do
	Sleep(1000)
Until Not ProcessExists("opera.exe") ; Die Installation ist beendet, wenn der Prozess nicht mehr existiert.

Select
	Case $BS = 1
		; Den Dialog "Eigenschaften von Internet | Programme" aufrufen.
		Run("rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,5")

		; Die Funktion zum warten auf das erste Fenster aufrufen.
		$Fenster_Titel = "Eigenschaften von Internet" ; Der Titel gilt auch für das folgende Fenster 1/1:2.
		$Fenster_Text = "Programme" ; Der Text gilt auch für das folgende Fenster 1/1:2.
		_StartVerzoegerung($Fenster_Titel, $Fenster_Text, "B", 1)

		; Eintragungen usw. in Fenster 1/1:2 (Eigenschaften von Internet | Programme).
		$Fenster_ID = "1/1:2"
		$Fenster_Handle = _FensterAktivieren($Fenster_Titel, $Fenster_Text, $Fenster_ID, 1)
		; Das gewünschte Standard E-Mail Programm auswählen.
		ControlCommand($Fenster_Handle, "", 301, "SelectString", 'Opera')
		Sleep(500)
		_Unterbrechen($ScriptTesten)
		If @error Then
			BlockInput(0)
			MsgBox(262192, "! F E H L E R !", "Opera konnte nicht als Standard E-Mail Programm eingestellt werden !") ; Flag = 1, 4, 1, 1, 2.
			BlockInput(1)
			;	Das Fenster durch einen Klick auf "Abbrechen" schließen.
			ControlClick($Fenster_Handle, "", 2)
		Else
			; Auf "OK" klicken um das Fenster zu schließen.
			ControlClick($Fenster_Handle, "", 1)
		EndIf
		_FensterDeaktiv($Fenster_Titel, $Fenster_Text, $Fenster_ID)

	Case $BS = 3
		; Für Windows 7 anpassen !

	Case $BS = 4
		; Für Windows 10 anpassen !
EndSelect

; Die exe-Datei zum sichern der Einstellungen einer Erweiterung (Gostery) kopieren.
FileCopy($Install_Sonstiges_Pfad & "\Einstellungen_sichern.exe", $Install_Pfad & "\", 9)

; Die geänderte Datei zur Auswahl der Sprachen kopieren.
FileCopy($Install_Sonstiges_Pfad & "\lngcode.txt", $Install_Pfad & "\", 9)

; Die Funktion zum löschen aller installierten Sprachdateien, bis auf die angegebene, aufrufen.
_DateienLoeschenEX($Install_Pfad & "\locale", "de")

; Sleep(), zur Sicherheit.
Sleep(1000)

; Die Funktion zum löschen aller installierten "defaults"-Dateien, bis auf die angegebenen, aufrufen.
$Datei[0] = "bookmarks.adr"
$Datei[1] = "dictionaries.xml"
$Datei[2] = "feedreaders.ini"
$Datei[3] = "handlers-ignore.ini"
$Datei[4] = "plugin-ignore.ini"
$Datei[5] = "public_domains.dat"
$Datei[6] = "search.ini"
$Datei[7] = "tips_metadata.ini"
$Datei[8] = "xmlentities.ini"
_DateienLoeschenEX($Install_Pfad & "\defaults", $Datei)

; Den kompletten Ordner mit den Einstellungen usw. löschen (wurde während der Installation neu erstellt).
DirRemove(@AppDataDir & "\Opera\Opera\", 1)

; Den neuen Ordner mit den eigenen Einstellungen usw. kopieren.
DirCopy($Install_Sonstiges_Pfad & "\Einstellungen", @AppDataDir & "\Opera\Opera", 9) ; Der Ordnername ist der letzte Teil des Installpfades z.B. Installpfad = "C:\Programme\sonstige\Browser" >>> Ordnername = @AppDataDir & "\Opera\Browser".
;		Den letzten Teil des Installpfades isolieren und eintragen ?

; Das/die Symbol/e anlegen.
If Not FileExists(@AppDataDir & "\Microsoft\Internet Explorer\Quick Launch\Internet*Opera.lnk") Then
	Select
		Case $BS = 1
			; Das Symbol in der Schnellstartleiste anlegen.
			FileCreateShortcut($Install_Pfad & "\Opera.exe", @AppDataDir & "\Microsoft\Internet Explorer\Quick Launch\Internet              Opera.lnk", $Install_Pfad, "", "Opera Internetbrowser.", "", "", "", @SW_SHOWNORMAL)

		Case $BS = 3 Or $BS = 4
			; Das Symbol im Startmenü anlegen.
			FileCreateShortcut($Install_Pfad & "\Opera.exe", @ProgramsCommonDir & "\Internet Opera.lnk", $Install_Pfad, "", "Opera Internetbrowser.", "", "", "", @SW_SHOWNORMAL)
			; Das Symbol vom Startmenü, auch in die Schnellstartleiste kopieren.
			FileCopy(@ProgramsCommonDir & "\Internet Opera.lnk", @AppDataDir & "\Microsoft\Internet Explorer\Quick Launch\", 9)
	EndSelect
EndIf

; Sleep(), zur Sicherheit.
Sleep(4000)

; Die Erweiterung für "Opera" installieren (YouTube Unblocker,  Fastesttube,  Ghostery, ClipConverter, Adblock Plus, StopSocial, XTranslate).
; Das Suchhandle für die Suche nach ".oex"-Dateien ermitteln.
$Suchhandle = FileFindFirstFile($Install_Sonstiges_Pfad & "\Erweiterungen\*.oex")
$LV = 0
; Eine Endlosschleife um die vollständigen Dateinamen alle ".oex"-Dateien in dem Verzeichnis auszulesen, starten.
While 1
	$Datei_Name = FileFindNextFile($Suchhandle)
	If @error Then
		; Die Schleife abbrechen, wenn keine ".oex"-Dateien mehr vorhanden sind.
		ExitLoop
	EndIf
	$LV = $LV + 1
	; Die Funktion zum Installieren der Erweiterung starten.
	OperaErweiterungInstallieren($Datei_Name, "Erw. " & $LV, $Erweiterung_Pfad)
	; Sleep(), zur Sicherheit.
	Sleep(1000)
WEnd

; Sleep(), zur Sicherheit.
Sleep(2000)

; Die Funktion zum schließen des Browser aufrufen (der Browser wurde nur zum installieren der Erweiterungen gestartet).
_BrowserSchliessen(5, "", False)


; Sleep(), zur Sicherheit.
Sleep(4000)

; Die neuerstellte Datei "widget.dat" in ein Array einlesen (damit die richtigen "wuid"-Pfade daraus ausgelesen werden können).
_FileReadToArray($Erweiterung_Pfad & "\widgets.dat", $Array)

; Das Suchhandle für die Suche nach den ".INI"-Dateien ermitteln.
$Suchhandle = FileFindFirstFile($Install_Sonstiges_Pfad & "\Erweiterungen\*.INI")

; Eine Endlosschleife zum suchen von ".INI"-Dateien (zum ermitteln der Pfade und zum kopieren der Dateien), starten.
While 1
	$Datei_Name = FileFindNextFile($Suchhandle)
	If @error Then
		; Die Schleife abbrechen, wenn keine Dateien mehr vorhanden sind.
		ExitLoop
	EndIf
	; Die Dateierweiterung ".INI" abttrennen.
	$Erweiterung = StringTrimRight($Datei_Name, 4)

	; Den Pfad zu dem "wuid"-Ordner dieser Erweiterung suchen.
	For $LV = 1 To $Array[0]
		; Den richtigen Eintrag in der Datei "widgets.dat" suchen, den "wuid"-Pfad auslesen und den String ins richtige Format umwandeln.
		If StringRegExp($Array[$LV], "(?i)\Q" & $Erweiterung & "\E") Then
			$WUID_Pfad = StringTrimRight(StringTrimLeft($Array[$LV - 1], 15), 2)
			; Den richtigen Pfad ermitteln und die Datei kopieren (dabei wird die Datei umbenannt).
			$Pfad = _PfadErmitteln($Erweiterung_Pfad & "\" & $WUID_Pfad, "00000000") ; $Dateiname = ist immer "00000000".
			If @error Then
				MsgBox(262192, "! ! ! F E H L E R ! ! !", "Die Einstellungen dieser Erweiterung konnten nicht übertragen werden !") ; Flag = 1, 4, 1, 1, 2.
			Else
				FileCopy($Install_Sonstiges_Pfad & "\Erweiterungen\" & $Datei_Name, $Pfad, 9)
				ExitLoop
			EndIf
		EndIf
	Next
WEnd

; Die Kontextmenüs von Windows anpassen.
; Wird der Installpfad der Programme "KompoZer" oder "MS-Office" geändert, so müssen auch die folgenden Befehle angepasst werden !
Select
	Case $BS = 1
		RunWait('REGEDIT /S "' & $Install_Sonstiges_Pfad & "\Opera Kontextmenü_XPx86.reg" & '"')

		; Wenn das Programm "KompoZer" installiert ist, den Kontextmenüs einige Einträge hinzufügen (wird der Installpfad von "KompoZer" geändert so muss auch dies geändert werden).
		If FileExists(@AppDataDir & "\kompozer.net\KompoZer") Then
			RegWrite("HKCR\Opera.HTML\Shell\edit1", "", "REG_SZ", "&Mit KompoZer bearbeiten")
			RegWrite("HKCR\Opera.HTML\Shell\edit1\command", "", "REG_SZ", '"C:\Programme\Sonstige\KompoZer\kompozer.exe"')

			RegWrite("HKCR\Opera.HTML\Shell\print", "", "REG_SZ", "Datei &ausdrucken")
			RegWrite("HKCR\Opera.HTML\Shell\print\command", "", "REG_SZ", '"C:\Programme\Sonstige\KompoZer\kompozer.exe"')

			If RegRead("HKCR\Opera.HTML\Shell\edit1", "") <> "&Mit KompoZer bearbeiten" Or RegRead("HKCR\Opera.HTML\Shell\print", "") <> "Datei &ausdrucken" Then
				BlockInput(0)
				MsgBox(262192, "! ! ! F E H L E R ! ! !", "Der Wert konnte nicht in die Registry eingetragen werden !") ; Flag = 1, 4, 1, 1, 2.
			EndIf
		EndIf

		; Den Uninstall-Schüssel von "MS-Office 2003" suchen (wird der Installpfad von "MS-Office" geändert, so muss auch dies geändert werden).
		For $LV = 1 To 300
			If RegEnumKey("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", $LV) = "{90110407-6000-11D3-8CFE-0150048383C9}" Then

				RegWrite("HKCR\Opera.HTML\Shell\edit", "", "REG_SZ", "&Mit MS-Office bearbeiten")
				RegWrite("HKCR\Opera.HTML\Shell\edit\command", "", "REG_SZ", '"C:\Programme\Microsoft Office\OFFICE11\msohtmed.exe" %1')

				RegDelete("HKCR\Opera.HTML\Shell\edit\ddeexec", "")
				RegWrite("HKCR\Opera.HTML\Shell\edit\ddeexec\Application", "", "REG_SZ", "msohtmed")
				RegWrite("HKCR\Opera.HTML\Shell\edit\ddeexec\Topic", "", "REG_SZ", "System")

				RegWrite("HKCR\Opera.HTML\Shell\print\command", "", "REG_SZ", '"C:\Programme\Microsoft Office\OFFICE11\msohtmed.exe" /p %1')
			EndIf
		Next

	Case $BS = 3 Or $BS = 4
		If $BS = 3 Then
			RunWait('REGEDIT /S "' & $Install_Sonstiges_Pfad & "\Opera Kontextmenü_7x64.reg" & '"')
		Else
			RunWait('REGEDIT /S "' & $Install_Sonstiges_Pfad & "\Opera Kontextmenü_10x64.reg" & '"')
		EndIf

		; Wenn das Programm "KompoZer" installiert ist, den Kontextmenüs einige Einträge hinzufügen (wird der Installpfad von "KompoZer" geändert so muss auch dies geändert werden).
		If FileExists(@AppDataDir & "\kompozer.net\KompoZer") Then

			RegWrite("HKCR\Opera.HTML\Shell\edit1", "", "REG_SZ", "&Mit KompoZer bearbeiten")
			RegWrite("HKCR\Opera.HTML\Shell\edit1\command", "", "REG_SZ", '"C:\Program Files (x86)\Sonstige\KompoZer\kompozer.exe"')

			RegWrite("HKCR\Opera.HTML\Shell\print", "", "REG_SZ", "Datei &ausdrucken")
			RegWrite("HKCR\Opera.HTML\Shell\print\command", "", "REG_SZ", '"C:\Program Files (x86)\Sonstige\KompoZer\kompozer.exe"')

			If RegRead("HKCR\Opera.HTML\Shell\edit1", "") <> "&Mit KompoZer bearbeiten" Or RegRead("HKCR\Opera.HTML\Shell\print", "") <> "Datei &ausdrucken" Then
				BlockInput(0)
				MsgBox(262192, "! ! ! F E H L E R ! ! !", "Der Wert konnte nicht in die Registry eingetragen werden !") ; Flag = 1, 4, 1, 1, 2.
			EndIf
		EndIf

		; Den Uninstall-Schüssel von "MS-Office 2003" suchen (wird der Installpfad von "MS-Office" geändert, so muss auch dies geändert werden).
		For $LV = 1 To 300
			If RegEnumKey("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", $LV) = "{90110407-6000-11D3-8CFE-0150048383C9}" Then

				RegWrite("HKCR\Opera.HTML\Shell\edit", "", "REG_SZ", "&Mit MS-Office bearbeiten")
				RegWrite("HKCR\Opera.HTML\Shell\edit\command", "", "REG_SZ", '"C:\Program Files (x86)\Microsoft Office\OFFICE11\msohtmed.exe" %1')

				RegDelete("HKCR\Opera.HTML\Shell\edit\ddeexec", "")
				RegWrite("HKCR\Opera.HTML\Shell\edit\ddeexec\Application", "", "REG_SZ", "msohtmed")
				RegWrite("HKCR\Opera.HTML\Shell\edit\ddeexec\Topic", "", "REG_SZ", "System")

				RegWrite("HKCR\Opera.HTML\Shell\print\command", "", "REG_SZ", '"C:\Program Files (x86)\Microsoft Office\OFFICE11\msohtmed.exe" /p %1')
			EndIf
		Next
EndSelect

; Sleep(), zur Sicherheit.
Sleep(500)

; Die Windows-Komponente ("IE") bei Bedarf dektivieren.
Select
	Case $BS = 1
		$Schluessel = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\Oc Manager\Subcomponents"
		; Abfragen, ob die Software-Konfiguration überhaupt geändert werden muss.
		If RegRead($Schluessel, "IEAccess") = 1 Then ; Anders lässt sich der Zustand des Items nicht abfragen.
			; Den ToolTip anzeigen.
			ToolTip(@LF & "Die Windows-Komponenten werden nun konfiguriert" & @LF & @LF & "         Bitte warten Sie: (Dauer: c.a. 0,2 Min.)", @DesktopWidth * 0.36, @DesktopHeight * 0.6, "Konfigurieren der Windows-Komponenten", 1, 4)
			; Abfragen, ob die Konfiguration für den "Internet Explorer" geändert werden muss und den entsprechenden Text in die Datei "Komponenten.txt" einfügen.
			If RegRead($Schluessel, "IEAccess") = 1 Then
				FileWrite($Install_Sonstiges_Pfad & "\Komponenten.txt", "IEAccess=off" & @LF) ; Mit Zeilenvorschub, damit der eventuell folgende Text in der nächsten Zeile beginnt.
			EndIf

			; Abfragen ob die Konfiguration für "Outlook Express" geändert werden muss und den entsprechenden Text in die Datei "Komponenten.txt" einfügen.
			If RegRead($Schluessel, "oeaccess") = 1 Then
				FileWrite($Install_Sonstiges_Pfad & "\Komponenten.txt", "OEAccess=off")
			EndIf

			; Die Windows-Komponenten wie gewünscht einrichten.
			RunWait(@WindowsDir & '\system32\sysocmgr.exe /i:' & @WindowsDir & '\inf\sysoc.inf' & " /u:" & $Install_Sonstiges_Pfad & '\Komponenten.txt' & " /r /q")
			; Den ToolTip wieder ausschalten.
			ToolTip("")
		EndIf

		; Die Datei "Komponenten.txt" wieder löschen (die Datei "Komponenten.txt" muss vor jedem Ausführen des Scripts neu erstellt werden !).
		FileDelete($Install_Sonstiges_Pfad & "\Komponenten.txt")

		; Eine neue Verknüpfung für das Programm "IE" im Programme-Ordner anlegen (die alte Verknüpfung wurde beim deaktivieren gelöscht).
		FileCreateShortcut(@ProgramFilesDir & "\Internet Explorer\IEXPLORE.EXE", @ProgramsDir & "\Internet Explorer.lnk", @ProgramFilesDir & "\Internet Explorer", "", 'Startet das Programm "Internet Explorer"', "", "", "", @SW_SHOWNORMAL)

	Case $BS = 3
		; Für Windows 7 anpassen !

	Case $BS = 4
		; Für Windows 10 anpassen !
EndSelect

; Unnötige Dateien löschen.
FileDelete($Install_Pfad & "\skin\windows_skin.zip")

; Sleep(), zur Sicherheit.
Sleep(1000)

; Den Splash-Screen wieder ausschalten.
SplashOff()

; Die Funktion zum aktivieren der Mauszeiger aufrufen.
_CursorAnzeigen(True)

; Die Eingabemöglichkeiten mit Tastatur oder Maus freigeben.
BlockInput(0)

; Script beenden.
Exit (0)


; #FUNKTION# ==========================================================================================================================================
; Funktion zum anzeigen und auswerten der Fragen vor und des Wartehinweis während der Installation.
; =====================================================================================================================================================
Func InstallFragenWartehinweis($_OS, $_Path, $_Finish)
	Local $_Correction, $_Reply, $_IP = "www.google.de" ; Der URL der getestet werden soll, es MUSS der URL (ohne "http://") eines möglichst zuverlässigen Servers angeben werden, damit diese Funktion richtig funktioniert.

	If MsgBox(262436, "Hinweis.", 'Wollen Sie das Programm "Opera" und die Browser-Erweiterungen jetzt' & @LF & "installieren und einrichten ?") = 7 Then ; Flag = 5, 3, 2, 1, 2.
		; Das Script beenden (abbrechen).
		Exit ($_Finish)
	EndIf

	If MsgBox(262209, "Hinweis.", 'Das Programm wird in den in dem Pfad:' & @LF & @LF & '"' & $_Path & '"' & @LF & @LF & "installiert") = 2 Then ; Flag = 2, 5, 1, 1, 2.
		; Das Script beenden (abbrechen).
		Exit ($_Finish)
	EndIf

	; Testen (mit Timeout), ob überhaupt eine Internetverbindung besteht (WAN-Kabel entfernt...).
	If Ping($_IP, 1000) > 1 Then
		; Den Server anpingen, um festzustellen, ob eine funktionierende Verbindung zu dem Server besteht.
		If Ping($_IP) > 1 Then
			; Die Meldung wegen dem notwendigen trennen der Internetverbindung anzeigen.
			_MsgBoxEx(262192, "! ! ! H I N W E I S ! ! !", "                   Es besteht eine Internetverbindung ! " & @LF & @LF & _
					"Diese Verbindung MUSS, vor dem Fortfahren, unbedingt getrennt werden !" & @LF & '             Wenn Sie bereit sind, klicken Sie auf den Button "OK".', @DesktopWidth - 700, @DesktopHeight - 300) ; Flag = 1, 4, 1, 1, 2.
		EndIf

		; Den Server nochmals anpingen, um festzustellen, ob noch eine Internetverbindung besteht.
		While Ping($_IP) > 1
			; Die Meldung anzeigen falls die Internetverbindung weiterhin noch besteht.
			$_Reply = _MsgBoxEx(262193, "! ! ! F E H L E R ! ! !", "Die Internetverbindung besteht immer noch !" & @LF & _
					"       Bitte trennen Sie die Verbindung." & @LF & @LF & 'Wenn bereit, klicken Sie auf den Button "OK".' & @LF & _
					'      ("Abbrechen" = Suche abbrechen)', @DesktopWidth - 570, @DesktopHeight - 300) ; Flag = 2, 4, 1, 1, 2.

			If $_Reply = 2 Then
				; Bei Eingabe "Abbrechen", dass Script beenden.
				Exit ($_Finish)
			Else
				; Wenn ein anderer Wert zurückgegeben wird (Eingabe "OK"), die Schleife wiederholen.
				ContinueLoop
			EndIf
		WEnd
	EndIf

	; Die Anzeige der Wartemeldung unter Windows 7 mit 125% Darstellung korrigieren, damit die Anzeige wieder stimmt.
	If $_OS = 3 And RegRead("HKCU\Control Panel\Desktop", "LogPixels") = 120 Then
		$_Correction = 1.25
	Else
		$_Correction = 1
	EndIf

	; Anzeigen des Splash-Screens mit des Wartehinweis (immer im Vordergrund).
	SplashTextOn("Wartehinweis", @LF & 'Die Programme für den Zugriff auf das Internet werden' & @LF & "nun installiert und eingerichtet." & @LF & @LF & "Bitte warten Sie: (Dauer: c.a. 1,9 Min.)", 715 * $_Correction, 210 * $_Correction, -1, 15, 16, "Times New Roman", 20)
	; Sleep(), damit man den Splash-Screen auch komplett lesen kann.
	Sleep(5000)
	; Anzeigen des Splash-Screens mit des Wartehinweis (nicht immer im Vordergrund).
	SplashTextOn("Wartehinweis", @LF & 'Die Programme für den Zugriff auf das Internet werden' & @LF & "nun installiert und eingerichtet." & @LF & @LF & "Bitte warten Sie: (Dauer: c.a. 1,9 Min.)", 715 * $_Correction, 210 * $_Correction, -1, 15, 18, "Times New Roman", 20)
EndFunc ; InstallFragenWartehinweis()


; #FUNKTION# ==========================================================================================================================================
; Funktion zum installieren der Browser-Erweiterungen.
; =====================================================================================================================================================
Func OperaErweiterungInstallieren($_Opera_Extension, $_Ext_Nr, $_Ext_Path)
	Local $_Array[200], $_File_Sitze, $_LV, $_Wnd_Handle, $_Wnd_Name

	; Einer Variablen einen Wert zuwesen.
	$_Wnd_Name = "Erweiterung installieren"

	; Den Inhalt der "wigets.dat"-Datei in ein Array einlesen.
	_FileReadToArray($_Ext_Path & "\widgets.dat", $_Array)
	For $_LV = 1 To $_Array[0]
		; Testen, ob die Erweiterung schon installiert wurde, wenn Ja, die Meldung ausgeben und die Funktion ohne Installation verlassen.
		If StringRegExp($_Array[$_LV], "(\Q" & $_Opera_Extension & "\E)") Then
			MsgBox(262192, "", '! ! ! Die Erweiterung "' & $_Ext_Nr & '" wurde schon installiert ! ! !') ; Flag = 1, 4, 1, 1, 2.
			Return
		EndIf
	Next

	; Die ursprüngliche Dateigröße ermitteln.
	$_File_Sitze = FileGetSize($_Ext_Path & "\widgets.dat")

	; Die Erweiterung installieren.
	ShellExecute($Install_Sonstiges_Pfad & "\Erweiterungen" & "\" & $_Opera_Extension)
	; Die Funktion um auf das Fenster "Erweiterung installieren" zu warten aufrufen (besteht eine Internetverbindung, so erscheint das Fenster stark verzögert).
	_StartVerzoegerung($_Wnd_Name, "", "", 1, 30)

	; Eintragungen usw. in Fenster 1 (Erweiterung installieren).
	$_Wnd_Handle = _FensterAktivieren($_Wnd_Name, "", $_Ext_Nr, 1)
	; Das Fenster nochmals aktivieren, falls inzwischen ein anderes Fenster aktiviert wurde (damit der MouseClick()-Befehl auch an das richtige Fenster gesendet werden).
	WinActivate($_Wnd_Name)
	WinWaitActive($_Wnd_Name)
	; Erst <TAB> und dann <ENTER> an das Fenster senden um den "Installieren"-Button anzuklicken (anders lässt sich nicht sicher auf dieses Fenster reagieren).
	Sleep(500)
	Send("{TAB}")
	Sleep(500)
	Send("{ENTER}")
	Sleep(500)

	; Die aktuelle Dateigröße mit der gespeicherten Dateigröße vergleichen, wenn die aktuelle Dateigröße größer ist, die Schleife und die Funktion beenden.
	While FileGetSize($_Ext_Path & "\widgets.dat") < $_File_Sitze
		Sleep(500)
	WEnd

	Return
EndFunc ; OperaErweiterungInstallieren()
