Moin zusammen,
ich möchte nun auch mal gerne ein Script von mir vorstellen. Naja die Basis dafür und einige Funktionen habe ich mir hier aus dem Forum "genommen" (Als Basis "DeepRed92's Install Creator (in Arbeit)" @DeepRed92) und ("ZIP - Packen / Entpacken mit Windows eigener Funktion" @BugFix) Vielen Dank dafür. Aber in der Kombi sind die Schnippsel noch nicht verwendet worden.
Um was geht es? Eine Setup-Routine / Installations-Routine oder auch Update-Routine für euer Programm.
Features:
- Pfad auslesen um ein Update direkt zu erkennen
- Eine Routine zum Registrieren mit Upload auf einen FTP Server
- Erstellen eines Backups falls ihr ein Update macht
- Installation euer hinterlegten Programmdaten
- Erstellung von Shortcuts im Startmenü, Desktop und Taskbar.
How-To:
Ihr passt das Script nach euren Bedürfnissen an. D.h.:
- Ihr tragt optional die Verbindunsdaten zu eurem FTP-Server ein
- Ihr tragt eure Programme in der Funktion "_installroutine" (Zeile 424 ff.) und beim ProcessClose (Zeile 350 ff.) ein.
- Ihr erstellt eine Grafik (164x314 px) und ein Icon und hinterlegt diese beim Script in den Unterordner "Ressourcen"
- Ihr kompiliert das Script mit dem Autoit3Wrapper und fügt vorher auf dem Register "Resource Update" im Feld "Extra resource Fields" die kompletten Pfade zu eueren Dateien ein. Denkt auch an die Grafik und das Icon.
Über Anregungen, Kritik und Fragen freue ich mich natürlich.
Viele Grüße,
KriZza
#NoTrayIcon
#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\50_Graphics\GuiIcons\ProgrammIcons\TCINSTALL.ico
#AutoIt3Wrapper_Outfile=TC-Viewer-Setup.exe
#AutoIt3Wrapper_Res_Comment=Setup für den TC-Viewer
#AutoIt3Wrapper_Res_Description=Setup für den TC-Viewer
#AutoIt3Wrapper_Res_Fileversion=3.1.0.1
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Res_File_Add=C:\Geschäftliches\Sonstiges\Programmierung\TrainingControl\3_Setuproutine\Ressourcen\default.jpg,rt_rcdata, DEFAULTPIC
#AutoIt3Wrapper_Res_File_Add=C:\Geschäftliches\Sonstiges\Programmierung\TrainingControl\3_Setuproutine\Ressourcen\TCVIEWER.ico,rt_rcdata, TCVICO
#AutoIt3Wrapper_Res_File_Add=C:\Geschäftliches\Sonstiges\Programmierung\ReleaseUmgebung\Aktuell\TC-Viewer.exe,-10, TCVIEWER
#AutoIt3Wrapper_Res_File_Add=C:\Geschäftliches\Sonstiges\Programmierung\ReleaseUmgebung\Aktuell\TC-Viewer-Updater.exe,-10, TCVIEWERUPDATER
#AutoIt3Wrapper_Res_File_Add=C:\Geschäftliches\Sonstiges\Programmierung\ReleaseUmgebung\Aktuell\TCVRIB.dll,-10, TCVRIB
; usw usw usw.
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#Region Includes
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <WinAPI.au3>
#include <GuiConstantsEx.au3>
#include <ListViewConstants.au3>
#include <GUIListView.au3>
#include <GUIRichEdit.au3>
#include <ScrollBarConstants.au3>
#include <GUIScrollBars.au3>
#include <icons.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIRes.au3>
#include <WinAPIInternals.au3>
#include <FTPEx.au3>
#include <File.au3>
#include <Constants.au3>
;~ If @AutoItVersion > "3.3.10.0" Then
Global $ghGDIPDLL = $__g_hGDIPDll
#EndRegion Includes
#Region GUIPARAMETER
Opt("GUICloseOnESC", 0)
#EndRegion GUIPARAMETER
Global $Readexisttcview = RegRead("HKEY_CURRENT_USER\Software\TTC-Viewer", "MainPath") ;für ein Update... eure software per RegWrite eintragen.
If @error Then
$SetupOrUpdate = "Setup"
Else
$SetupOrUpdate = "Update"
EndIf
$Version = "3.1.0.1"
$UpdateName = "Update 3"
$DATASIZETCVIEWER = "19.3" ;Größe des Pakets
#Region PRESTART-FUNKTIONEN
if FileExists($Readexisttcview & "\TC-Viewer.exe") Then
$GETORVERS = FileGetVersion($Readexisttcview & "\TC-Viewer.exe")
If $GETORVERS > $Version Then
$ASKDOWNGRADE = MsgBox(36,"TC-Viewer","Wollen Sie wirklich ein Downgrade vom TC-Viewer durchführen?")
If $ASKDOWNGRADE = 7 Then
Exit
EndIf
EndIf
EndIf
DirCreate(@AppDataDir & "\TC-Viewer")
_FileInstallFromResource("DEFAULTPIC", @AppDataDir & "\TC-Viewer\default.jpg")
_FileInstallFromResource("TCVICO", @AppDataDir & "\TC-Viewer\TCVIEWER.ico")
#EndRegion PRESTART-FUNKTIONEN
#Region Globale Einstellungen
Global $FTPserver = 'xxx'
Global $FTPusername = 'xxx'
Global $FTPpass = 'xxx'
#EndRegion Globale Einstellungen
#Region Hauptgui
Global $hMain = GUICreate("TC-Viewer "& $SetupOrUpdate, 498, 361, -1, -1,$WS_POPUP+$WS_CAPTION)
GUISetFont(8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlCreateLabel("", 0, 314, 508, 2, 0x50020010, 0x00020004)
$btnNext0 = GUICtrlCreateButton("Weiter >", 324, 327, 75, 23, $BS_DEFPUSHBUTTON)
GUICtrlSetState($btnNext0, $GUI_HIDE)
GUICtrlSetState($btnNext0, $GUI_FOCUS)
$EXITBTN = GUICtrlCreateButton("Abbrechen", 410, 327, 75, 23)
#EndRegion
#Region Willkommen
Global $picWiz = GUICtrlCreatePic(@AppDataDir & "\TC-Viewer\default.jpg", 0, 0, 164, 314, 0x5400010E)
GUICtrlSetState($picWiz, $GUI_HIDE)
Global $labWhite = GUICtrlCreateLabel("", 164, 0, 334, 314)
GUICtrlSetState($labWhite, $GUI_HIDE)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $labWelc = GUICtrlCreateLabel("Willkommen beim "&$SetupOrUpdate&" vom TC-Viewer", 180, 16, 293, 46)
GUICtrlSetFont(-1, 12, 800, 0, 'MS Shell Dlg')
GUICtrlSetState($labWelc, $GUI_HIDE)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Global $labAssist = GUICtrlCreateLabel("Dieser Assistent wird Sie durch die Installation vom TC-Viewer (Version: "&$Version&" | "&$UpdateName&") begleiten." & @CRLF & @CRLF & "Es wird empfohlen, vor der Installation alle anderen Programme zu schließen, damit bestimmte Systemdateien ohne Neustart ersetzt werden können." & @CRLF & @CRLF & "Klicken Sie auf Weiter, um fortzufahren.", 180, 73, 293, 211)
GUICtrlSetFont(-1, 8.5, 400, 0, 'MS Shell Dlg 2')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetState($labAssist, $GUI_HIDE)
#EndRegion
#Region Registrierung
Global $lblHead = GUICtrlCreateLabel("", 0, 0, 498, 57)
GUICtrlSetState($lblHead, $GUI_HIDE)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $lblHeadGr = GUICtrlCreateLabel("", 0, 57, 508, 2, 0x50020010, 0x00020004)
GUICtrlSetState($lblHeadGr, $GUI_HIDE)
Global $lblLicence = GUICtrlCreateLabel("Registrierung", 15, 8, 420, 16)
GUICtrlSetState($lblLicence, $GUI_HIDE)
GUICtrlSetFont(-1, 8.5, 800, 0, "MS Shell Dlg")
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$btnBack1 = GUICtrlCreateButton("< Zurück", 249, 327, 75, 23)
GUICtrlSetState($btnBack1, $GUI_HIDE)
$btnNext1 = GUICtrlCreateButton("Weiter >", 324, 327, 75, 23, $BS_DEFPUSHBUTTON)
;~ GUICtrlSetState($btnNext1, $GUI_FOCUS)
GUICtrlSetState($btnNext1, $GUI_HIDE)
GUICtrlSetState($btnNext1, $GUI_DISABLE)
Global $lblReadLic = GUICtrlCreateLabel("Bitte bestätigen Sie folgende Informateionen und ändern diese bei Bedarf.", 23, 26, 413, 26)
GUICtrlSetState($lblReadLic, $GUI_HIDE)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Global $icoHead = GUICtrlCreatePic("", 450, 13, 32, 32)
GUICtrlSetState($icoHead, $GUI_HIDE)
_SetBkIcon(-1,@AppDataDir & "\TC-Viewer\TCVIEWER.ico", 0, 32, 32)
Global $lblPress = GUICtrlCreateLabel("Computername:", 23, 75, 100, 24)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlSetState($lblPress, $GUI_HIDE)
Global $lblPressInput = GUICtrlCreateInput(@ComputerName, 123, 73, 350, 20)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlSetState($lblPressInput, $GUI_HIDE)
Global $lblPressUN = GUICtrlCreateLabel("Benutzername:", 23, 105, 100, 24)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlSetState($lblPressUN, $GUI_HIDE)
Global $lblPressUNInput = GUICtrlCreateInput(GetFullName(@UserName), 123, 103, 350, 20)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlSetState($lblPressUNInput, $GUI_HIDE)
Global $lblPressIP= GUICtrlCreateLabel("IP-Adresse:", 23, 135, 100, 24)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlSetState($lblPressIP, $GUI_HIDE)
Global $lblPressIPInput = GUICtrlCreateInput(@IPAddress1, 123, 133, 350, 20)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlSetState($lblPressIPInput, $GUI_HIDE)
Global $lblPressEM= GUICtrlCreateLabel("E-Mail:", 23, 165, 100, 24)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlSetState($lblPressEM, $GUI_HIDE)
$TRYREADMAIL = "" ; Hier ein Pfad wo ihr die Mailadresse auslesen könnt.
Global $lblPressEMInput = GUICtrlCreateInput($TRYREADMAIL, 123, 163, 350, 20)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlSetState($lblPressEMInput, $GUI_HIDE)
$CHK_BACKUPDATA = GUICtrlCreateCheckbox("Erstelle eine Backupdatei vor dem Update.",23,195,450,20)
If $SetupOrUpdate = "Setup" Then
GUICtrlSetState($CHK_BACKUPDATA,$GUI_UNCHECKED)
GUICtrlSetState($CHK_BACKUPDATA,$GUI_DISABLE)
Else
GUICtrlSetState($CHK_BACKUPDATA,$GUI_CHECKED)
EndIf
$CHK_PURGEBACKUP = GUICtrlCreateCheckbox("Bereinige alle alten Backupdateien.",23,215,450,20)
GUICtrlSetState($CHK_PURGEBACKUP,$GUI_CHECKED)
GUICtrlSetState($CHK_PURGEBACKUP, $GUI_HIDE)
GUICtrlSetState($CHK_BACKUPDATA, $GUI_HIDE)
$radio_ablehnen = GUICtrlCreateCheckbox("Ich bestätige die angegebenen Daten.",23,277,450,20)
GUICtrlSetState($radio_ablehnen, $GUI_HIDE)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
#EndRegion
#Region Installationspfad
Global $lblHead2 = GUICtrlCreateLabel("", 0, 0, 498, 57)
GUICtrlSetState($lblHead2, $GUI_HIDE)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $lblHeadGr2 = GUICtrlCreateLabel("", 0, 57, 508, 2, 0x50020010, 0x00020004)
GUICtrlSetState($lblHeadGr2, $GUI_HIDE)
Global $lblLicence2 = GUICtrlCreateLabel("Verzeichnisauswahl", 15, 8, 420, 16)
GUICtrlSetState($lblLicence2, $GUI_HIDE)
GUICtrlSetFont(-1, 8.5, 800, 0, "MS Shell Dlg")
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Global $lblReadLic2 = GUICtrlCreateLabel("Bitte wählen Sie das Verzeichnis aus, in dem der TC-Viewer installiet werden soll.", 23, 26, 413, 26)
GUICtrlSetState($lblReadLic2, $GUI_HIDE)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Global $icoHead2 = GUICtrlCreatePic("", 450, 13, 32, 32)
GUICtrlSetState($icoHead2, $GUI_HIDE)
_SetBkIcon(-1, @AppDataDir & "\TC-Viewer\TCVIEWER.ico", 0, 32, 32)
$btnBack2 = GUICtrlCreateButton("< Zurück", 249, 327, 75, 23)
GUICtrlSetState($btnBack2, $GUI_HIDE)
$btnNext2 = GUICtrlCreateButton("Installieren", 324, 327, 75, 23, $BS_DEFPUSHBUTTON)
GUICtrlSetState($btnNext2, $GUI_HIDE)
Global $instTo = GUICtrlCreateLabel("Der TC-Viewer wird in das unten angegebene Verzeichnis installiert. Falls Sie in ein anderes Verzeichnis installieren möchten, klicken Sie auf Durchsuchen und wählen Sie ein anderes Verzeichnis aus. Klicken Sie auf Installieren, um die Installation zu starten." & @CRLF & @CRLF &"Bitte Installieren Sie den TC-Viewer nicht auf dem Laufwerk C:\ oder C:\Programme", 23, 73, 450, 98)
GUICtrlSetState($instTo, $GUI_HIDE)
Global $target = GUICtrlCreateGroup("Zielverzeichnis", 23, 187, 450, 57)
GUICtrlSetState($target, $GUI_HIDE)
If $SetupOrUpdate = "Setup" Then
Global $inptDir = GUICtrlCreateInput(@MyDocumentsDir & "\TC-Viewer", 40, 210, 310, 21)
ElseIf $SetupOrUpdate = "Update" Then
Global $inptDir = GUICtrlCreateInput($Readexisttcview, 40, 210, 310, 21)
EndIf
GUICtrlSetState($inptDir, $GUI_HIDE)
Global $btnDir = GUICtrlCreateButton("&Durchsuchen...", 365, 207, -1, 24)
GUICtrlSetState($btnDir, $GUI_HIDE)
Global $lblNeSp = GUICtrlCreateLabel("Benötigter Speicher: "&$DATASIZETCVIEWER&" MB", 23, 260, 225, 13)
GUICtrlSetState($lblNeSp, $GUI_HIDE)
If $SetupOrUpdate = "Setup" Then
$iFreeSpace = DriveSpaceFree("C:\")
ElseIf $SetupOrUpdate = "Update" Then
$getlw0 = StringLeft($Readexisttcview,3)
$iFreeSpace = DriveSpaceFree($getlw0)
EndIf
$freespacegetGB =$iFreeSpace / 1024
$roundfreespace = Round($freespacegetGB,1)
Global $lblAvSp = GUICtrlCreateLabel("Verfügbarer Speicher: " & $roundfreespace &" GB" , 23, 276, 225, 13)
GUICtrlSetState($lblAvSp, $GUI_HIDE)
#EndRegion
#Region Installation
Global $lblHead3 = GUICtrlCreateLabel("", 0, 0, 498, 57)
GUICtrlSetState($lblHead3, $GUI_HIDE)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $lblHeadGr3 = GUICtrlCreateLabel("", 0, 57, 508, 2, 0x50020010, 0x00020004)
GUICtrlSetState($lblHeadGr3, $GUI_HIDE)
Global $lblLicence3 = GUICtrlCreateLabel("Installation", 15, 8, 420, 16)
GUICtrlSetState($lblLicence3, $GUI_HIDE)
GUICtrlSetFont(-1, 8.5, 800, 0, "MS Shell Dlg")
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Global $lblReadLic3 = GUICtrlCreateLabel("Führt die Installation vom TC-Viewer durch.", 23, 26, 413, 26)
GUICtrlSetState($lblReadLic3, $GUI_HIDE)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Global $icoHead3 = GUICtrlCreatePic("", 450, 13, 32, 32)
GUICtrlSetState($icoHead3, $GUI_HIDE)
_SetBkIcon(-1, @AppDataDir & "\TC-Viewer\TCVIEWER.ico", 0, 32, 32)
$btnBack3 = GUICtrlCreateButton("< Zurück", 249, 327, 75, 23)
GUICtrlSetState($btnBack3, $GUI_HIDE)
$btnNext3 = GUICtrlCreateButton("Weiter >", 324, 327, 75, 23, $BS_DEFPUSHBUTTON)
GUICtrlSetState($btnNext3, $GUI_HIDE)
GUICtrlSetState($btnNext3, $GUI_DISABLE)
Global $prog = GUICtrlCreateProgress(23, 89, 450, 18)
GUICtrlSetState($prog, $GUI_HIDE)
Global $instListView = GUICtrlCreateListView('files', 23, 114, 450, 179, BitOR($GUI_SS_DEFAULT_LISTVIEW,$LVS_NOCOLUMNHEADER))
GUICtrlSetState($instListView, $GUI_HIDE)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 425)
#EndRegion
#Region Installation abgeschlossen
Global $lblHead4 = GUICtrlCreateLabel("", 0, 0, 498, 57)
GUICtrlSetState($lblHead4, $GUI_HIDE)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $lblHeadGr4 = GUICtrlCreateLabel("", 0, 57, 508, 2, 0x50020010, 0x00020004)
GUICtrlSetState($lblHeadGr4, $GUI_HIDE)
Global $lblLicence4 = GUICtrlCreateLabel("Installation abgeschlossen", 15, 8, 420, 16)
GUICtrlSetState($lblLicence4, $GUI_HIDE)
GUICtrlSetFont(-1, 8.5, 800, 0, "MS Shell Dlg")
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Global $lblReadLic4 = GUICtrlCreateLabel("Die Installation wurde abgeschlossen. Bitte wählen Sie noch optional aus, über welche Verlinkungen Sie das Programm starten wollen.", 23, 26, 413, 26)
GUICtrlSetState($lblReadLic4, $GUI_HIDE)
GUICtrlSetFont(-1, 8.5, 400, 0, "MS Shell Dlg 2")
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Global $icoHead4 = GUICtrlCreatePic("", 450, 13, 32, 32)
GUICtrlSetState($icoHead4, $GUI_HIDE)
_SetBkIcon(-1, @AppDataDir & "\TC-Viewer\TCVIEWER.ico", 0, 32, 32)
$btnNext4 = GUICtrlCreateButton("Fertigstellen", 410, 327, 75, 23)
GUICtrlSetState($btnNext4, $GUI_DISABLE)
GUICtrlSetState($btnNext4, $GUI_HIDE)
$CHKSTARTMENU = GUICtrlCreateCheckbox("Startmenüeintrag erstellen",23,89,300,20)
GUICtrlSetState($CHKSTARTMENU, $GUI_HIDE)
GUICtrlSetState($CHKSTARTMENU, $GUI_CHECKED)
$CHKLINKDESKTOP = GUICtrlCreateCheckbox("Verlinkung auf dem Desktop erstellen",23,109,300,20)
GUICtrlSetState($CHKLINKDESKTOP, $GUI_HIDE)
GUICtrlSetState($CHKLINKDESKTOP, $GUI_CHECKED)
$CHKLINKTASK = GUICtrlCreateCheckbox("Verlinkung in der Taskleiste von Windows",23,129,300,20)
GUICtrlSetState($CHKLINKTASK, $GUI_HIDE)
GUICtrlSetState($CHKLINKTASK, $GUI_CHECKED)
$CHKSTARTAFTERINSTALL = GUICtrlCreateCheckbox("Starte den TC-Viewer nach Abschluss der Installation",23,277,300,20)
GUICtrlSetState($CHKSTARTAFTERINSTALL, $GUI_HIDE)
GUICtrlSetState($CHKSTARTAFTERINSTALL, $GUI_CHECKED)
#EndRegion
#Region PRESTART GUI
_showtab1()
GUISetState(@SW_SHOW, $hMain)
#EndRegion
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE or $msg = $EXITBTN Then
_exitInstaller()
EndIf
If $msg = $btnNext0 Then
_hidetab1()
_showtab2()
EndIf
If $msg = $btnBack1 Then
_hidetab2()
_showtab1()
EndIf
If $msg = $btnNext1 Then
;~ if GUICtrlRead($lblPressEMInput) = "" and = $GUI_CHECKED Then
;~ $askchkmailadd = MsgBox(36,"TC-Viewer | Setup", "Es wurde keine Mailadresse eingetragen. So können keine Update-Informationen gesendet werden. Wollen Sie wirklich fortfahren?")
;~ if $askchkmailadd = 6 Then
;~ _hidetab2()
;~ _showtab3()
;~ EndIf
;~ Else
_hidetab2()
_showtab3()
;~ EndIf
EndIf
If $msg = $btnBack2 Then
_hidetab3()
_showtab2()
EndIf
If $msg = $btnNext3 Then
_hidetab4()
_showtab5()
EndIf
If $msg = $btnNext4 Then
$readinstallpath2 = GUICtrlRead($inptDir)
$READCHKSTARTMENU = GUICtrlRead($CHKSTARTMENU)
If $READCHKSTARTMENU = $GUI_CHECKED Then
DirCreate(@StartMenuDir & "\Programme\TC-Viewer")
FileCreateShortcut($readinstallpath2 & "\TC-Viewer.exe", @StartMenuDir & "\Programme\TC-Viewer\TC-Viewer.lnk")
FileCreateShortcut($readinstallpath2 & "\TC-Viewer-Updater.exe", @StartMenuDir & "\Programme\TC-Viewer\TC-Viewer-Updater.lnk")
;~ FileCreateShortcut($readinstallpath2 & "\CODE\Uninstall.exe", @StartMenuDir & "\Programme\TC-Viewer\Uninstall.lnk")
EndIf
$READCHKLINKDESKTOP = GUICtrlRead($CHKLINKDESKTOP)
If $READCHKLINKDESKTOP = $GUI_CHECKED Then
FileCreateShortcut($readinstallpath2 & "\TC-Viewer.exe", @DesktopDir & "\TC-Viewer.lnk")
EndIf
$READCHKLINKTASK = GUICtrlRead($CHKLINKTASK)
If $READCHKLINKTASK = $GUI_CHECKED Then
_PinTaskbar($readinstallpath2 &"\TC-Viewer.exe")
EndIf
$READCHKSTARTAFTERINST = GUICtrlRead($CHKSTARTAFTERINSTALL)
If $READCHKSTARTAFTERINST = $GUI_CHECKED Then
ShellExecute($readinstallpath2 & "\TC-Viewer.exe")
EndIf
_exitInstaller2()
EndIf
If $msg = $btnNext2 Then
$readinstallpath = GUICtrlRead($inptDir)
$readinstallpath2 = StringLeft($readinstallpath,10)
if $readinstallpath = "C:\" or $readinstallpath2 = "C:\Program" Then
MsgBox(16,"TC-Viewer","Bitte wählen Sie einen anderen Pfad aus.")
Else
If ProcessExists("TC-Viewer.exe") Then
$STILLRUNNING = MsgBox(20, "TC-Viewer Installation", "Der »TC-Viewer« ist noch gestartet und muss für das Update beendet werden. Jetzt schließen?")
If $STILLRUNNING = 6 Then
ProcessClose("TC-Viewer.exe")
ProcessClose("TC-Viewer-Updater.exe")
ProcessClose("int.exe")
;~ usw usw usw
_installroutine()
If $STILLRUNNING = 7 Then
Sleep(300)
EndIf
EndIf
Else
_installroutine()
EndIf
EndIf
EndIf
If $msg = $btnBack3 Then
_hidetab4()
_showtab3()
EndIf
if $msg = $btnDir Then
$filesavetcviewer = FileSelectFolder("Installationsverzeichnis TC-Viewer","",7)
If @error Then
Sleep(50)
Else
GUICtrlSetData($inptDir, $filesavetcviewer)
$getlw = StringLeft($filesavetcviewer,3)
EndIf
EndIf
Select
Case $msg = $radio_ablehnen And BitAND(GUICtrlRead($radio_ablehnen), $GUI_CHECKED) = $GUI_CHECKED
GUICtrlSetState($btnNext1, $GUI_ENABLE)
GUICtrlSetState($btnNext1, $GUI_FOCUS)
EndSelect
WEnd
#Region InstallationsRoutine
Func _installroutine()
GUICtrlSetState($EXITBTN,$GUI_DISABLE)
GUICtrlSetState($btnBack3,$GUI_DISABLE)
_hidetab3()
_showtab4()
_uploaddata()
$readinstallpath = GUICtrlRead($inptDir)
GUICtrlSetData($prog,0)
DirCreate($readinstallpath & "\CODE")
DirCreate($readinstallpath & "\CODE\APPS")
DirCreate($readinstallpath & "\DATA\BACKUP")
If GUICtrlRead($CHK_PURGEBACKUP) = $GUI_CHECKED Then FileDelete($readinstallpath & "\DATA\BACKUP")
If GUICtrlRead($CHK_BACKUPDATA) = $GUI_CHECKED Then _BuildInZIP($readinstallpath & "\DATA\BACKUP\"&@YEAR&"-"&@MON&"-"&@MDAY&"_"&@HOUR&"-"&@MIN&"-"&@SEC&"-BACKUP.zip",$readinstallpath)
GUICtrlSetData($prog,3)
GUICtrlCreateListViewItem("Installiere - TC-Viewer.exe...",$instListView)
_GUICtrlListView_Scroll($instListView, 0, 1000)
_FileInstallFromResource("TCVIEWER", $readinstallpath & "\TC-Viewer.exe", True)
GUICtrlSetData($prog,6)
GUICtrlCreateListViewItem("Installiere - TC-Viewer-Updater.exe...",$instListView)
_GUICtrlListView_Scroll($instListView, 0, 1000)
_FileInstallFromResource("TCVIEWERUPDATER", $readinstallpath & "\TC-Viewer-Updater.exe", True)
GUICtrlSetData($prog,9)
GUICtrlCreateListViewItem("Installiere - TCVRIB.dll...",$instListView)
_GUICtrlListView_Scroll($instListView, 0, 1000)
_FileInstallFromResource("TCVRIB", $readinstallpath & "\TCVRIB.dll", True)
GUICtrlSetData($prog,12)
GUICtrlCreateListViewItem("Installiere - CODE\int.exe...",$instListView)
_GUICtrlListView_Scroll($instListView, 0, 1000)
;~ usw
;~ usw
;~ usw
;~ usw
;~ usw
;~ usw
;~ usw
;~ usw
GUICtrlCreateListViewItem("Installation erfolgreich abgeschlossen.",$instListView)
_GUICtrlListView_Scroll($instListView, 0, 1000)
GUICtrlSetData($prog,100)
GUICtrlSetState($btnNext3, $GUI_ENABLE)
_FileCreate($readinstallpath & "\CODE\NewInstall")
EndFunc
#EndRegion
#Region Allgemeine Funktionen
Func GetFullName($sUserName)
$colItems = ""
$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name = '" & $sUserName & "'", "WQL", 0x10 + 0x20)
If IsObj($colItems) then
For $objItem In $colItems
Return $objItem.FullName
Next
Else
Return SetError(1,0,"")
Endif
EndFunc
Func _BuildInZIP($sPath, $s_a_ToZip, $fUnZip=False, $iIndexBase=1, $fOverwrite=True)
Local $fh, $sNul = '', $sZIPHeader, $objShell = ObjCreate("Shell.Application"), $objZipOrdner, $err = 0
$sPath = FileGetLongName($sPath,1)
If $fUnZip Then
Local $temp, $objZip
If Not FileExists($s_a_ToZip) Then DirCreate($s_a_ToZip)
$temp = $objShell.Namespace($s_a_ToZip)
$objZip = $objShell.Namespace($sPath)
$temp.CopyHere($objZip.Items)
Return 1
EndIf
If (Not $fOverwrite) And FileExists($sPath) Then Return SetError(1,0,0)
If StringRight($sPath, 4) <> '.zip' Then Return SetError(2,0,0)
For $i = 1 To 18
$sNul &= Chr(0)
Next
$sZIPHeader = Chr(80) & Chr(75) & Chr(5) & Chr(6) & $sNul
$fh = FileOpen($sPath, 10)
FileWrite($fh, $sZIPHeader)
FileClose($fh)
$objZipOrdner = $objShell.Namespace($sPath)
If Not IsArray($s_a_ToZip) Then
If Not FileExists($s_a_ToZip) Then Return SetError(3,1,0)
$objZipOrdner.CopyHere($s_a_ToZip)
Sleep(1000)
Return 1
EndIf
For $i = $iIndexBase To UBound($s_a_ToZip) -1
If Not FileExists($s_a_ToZip[$i]) Then
$err += 1
ContinueLoop
EndIf
$objZipOrdner.CopyHere($s_a_ToZip[$i])
Sleep(1000)
Next
If $err Then Return SetError(3,$err,0)
Return 1
EndFunc ;==>_BuildInZIP
Func _SetBkIcon($BildID, $IconName, $IconID, $Width, $Height)
$hIcon = _Icons_Icon_Extract($IconName, $IconID, $Width, $Height)
$hBitmap = _Icons_Bitmap_CreateFromIcon($hIcon)
_SetHImage($BildID, $hBitmap)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DestroyIcon($hIcon)
EndFunc ;==>_SetBkIcon
Func _exitInstaller()
$ASKENDSETUP = MsgBox(36, "TC-Viewer | Setup", "Wollen Sie das Setup vom TC-Viewer wirklich beenden?")
If $ASKENDSETUP = 6 Then
DirRemove(@AppDataDir & "\TC-Viewer",1)
Exit
EndIf
EndFunc
Func _exitInstaller2()
DirRemove(@AppDataDir & "\TC-Viewer",1)
Exit
EndFunc
Func _FileInstallFromResource($sResName, $sDest, $isCompressed = False, $iUncompressedSize = Default)
Local $bBytes = _GetResourceAsBytes($sResName, $isCompressed, $iUncompressedSize)
If @error Then Return SetError(@error, 0, 0)
FileDelete($sDest)
FileWrite($sDest, $bBytes)
EndFunc
Func _GetResourceAsBytes($sResName, $isCompressed = False, $iUncompressedSize = Default)
Local $hMod = _WinAPI_GetModuleHandle("")
Local $hRes = _WinAPI_FindResource($hMod, 10, $sResName)
If @error Or Not $hRes Then Return SetError(1, 0, 0)
Local $dSize = _WinAPI_SizeOfResource($hMod, $hRes)
If @error Or Not $dSize Then Return SetError(2, 0, 0)
Local $hLoad = _WinAPI_LoadResource($hMod, $hRes)
If @error Or Not $hLoad Then Return SetError(3, 0, 0)
Local $pData = _WinAPI_LockResource($hLoad)
If @error Or Not $pData Then Return SetError(4, 0, 0)
Local $tBuffer = DllStructCreate("byte[" & $dSize & "]")
_WinAPI_MoveMemory(DllStructGetPtr($tBuffer), $pData, $dSize)
If $isCompressed Then
Local $oBuffer
_WinAPI_LZNTDecompress($tBuffer, $oBuffer, $iUncompressedSize)
If @error Then Return SetError(5, 0, 0)
$tBuffer = $oBuffer
EndIf
Return DllStructGetData($tBuffer, 1)
EndFunc
Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iUncompressedSize = Default)
; if no uncompressed size given, use 16x the input buffer
If $iUncompressedSize = Default Then $iUncompressedSize = 16 * DllStructGetSize($tInput)
Local $tBuffer, $ret
$tOutput = 0
$tBuffer = DllStructCreate("byte[" & $iUncompressedSize & "]")
If @error Then Return SetError(1, 0, 0)
$ret = DllCall("ntdll.dll", "long", "RtlDecompressBuffer", "ushort", 2, "struct*", $tBuffer, "ulong", $iUncompressedSize, "struct*", $tInput, "ulong", DllStructGetSize($tInput), "ulong*", 0)
If @error Then Return SetError(2, 0, 0)
If $ret[0] Then Return SetError(3, $ret[0], 0)
$tOutput = DllStructCreate("byte[" & $ret[6] & "]")
If Not _WinAPI_MoveMemory(DllStructGetPtr($tOutput), DllStructGetPtr($tBuffer), $ret[6]) Then
$tOutput = 0
Return SetError(4, 0, 0)
EndIf
Return $ret[6]
EndFunc
Func _PinTaskbar($File, $Pin = True)
If @OSBuild < 7600 Then Return SetError(1) ; Windows 7 only
If Not FileExists($File) Then Return SetError(2)
local $sFolder = StringRegExpReplace($File, "(^.*\\)(.*)", "\1")
local $sFile = StringRegExpReplace($File, "^.*\\", "")
local $oShell = ObjCreate("Shell.Application")
local $oFolder = $oShell.NameSpace($sFolder)
local $oFolderItem = $oFolder.ParseName($sFile)
local $oFolderItemVerbs = $oFolderItem.Verbs
local $hInstance = _WinAPI_LoadLibraryEx("shell32.dll", $LOAD_LIBRARY_AS_DATAFILE)
local $DoVerb = ''
If $hInstance Then
IF $Pin = 1 Then
local $DoVerb = _WinAPI_LoadString($hInstance, 5386)
Else
local $DoVerb = _WinAPI_LoadString($hInstance, 5387)
EndIf
_WinAPI_FreeLibrary($hInstance)
EndIf
IF $DoVerb = '' Then Return SetError(3) ; $DoVerb string couldn't received
For $i = 0 To $oFolderItemVerbs.Count - 1
If $oFolderItemVerbs.Item($i).Name = $DoVerb Then
$oFolderItemVerbs.Item($i).DoIt
Return
EndIf
Next
Return SetError(4) ; $DoVerb string not in menu
EndFunc
#EndRegion
#Region UPLOADDATA
Func _uploaddata()
Global $FILEPATH = @TempDir & "\TCDATA.cw1"
IniWrite($FILEPATH,"INSTALLDATA","ComputernameUSDA",GUICtrlRead($lblPressInput))
IniWrite($FILEPATH,"INSTALLDATA","BenutzernameUSDA",GUICtrlRead($lblPressUNInput))
IniWrite($FILEPATH,"INSTALLDATA","IPUSDA",GUICtrlRead($lblPressIPInput))
IniWrite($FILEPATH,"INSTALLDATA","EMAILUSDA",GUICtrlRead($lblPressEMInput))
IniWrite($FILEPATH,"INSTALLDATA","Version",$Version)
IniWrite($FILEPATH,"INSTALLDATA","Time",@MDAY&"."&@MON&"."&@YEAR&" "&@HOUR&":"&@MIN&":"&@SEC)
$hOpen = _FTP_Open('MyFTP Control')
$hConn = _FTP_Connect($hOpen, $FTPserver, $FTPusername, $FTPpass,1,21)
_FTP_DirCreate($hConn,"/TCFTP/1INSTALLDATA")
_FTP_ProgressUpload($hConn, $FILEPATH, "/TCFTP/1INSTALLDATA/"&@ComputerName&"-"&@MDAY&"-"&@MON&"-"&@YEAR&"-"&@HOUR&@MIN&@SEC&".cw1", "")
$Ftpc = _FTP_Close($hConn)
$Ftpo = _FTP_Close($hOpen)
FileDelete($FILEPATH)
EndFunc
#EndRegion
#Region SHOW / HIDE TABS
Func _hidetab2()
GUICtrlSetState($lblHead, $GUI_HIDE)
GUICtrlSetState($lblHeadGr, $GUI_HIDE)
GUICtrlSetState($lblReadLic, $GUI_HIDE)
GUICtrlSetState($lblLicence, $GUI_HIDE)
GUICtrlSetState($lblReadLic, $GUI_HIDE)
GUICtrlSetState($icoHead, $GUI_HIDE)
GUICtrlSetState($lblPress, $GUI_HIDE)
;~ GUICtrlSetState($richEditLic, $GUI_HIDE)
GUICtrlSetState($radio_ablehnen, $GUI_HIDE)
;~ GUICtrlSetState($radio_annehmen, $GUI_HIDE)
GUICtrlSetState($btnBack1, $GUI_HIDE)
GUICtrlSetState($btnNext1, $GUI_HIDE)
;~ GUICtrlSetState($radio_annehmen, $GUI_HIDE)
GUICtrlSetState($radio_ablehnen, $GUI_HIDE)
GUICtrlSetState($lblPressInput, $GUI_HIDE)
GUICtrlSetState($lblPressUN, $GUI_HIDE)
GUICtrlSetState($lblPressUNInput, $GUI_HIDE)
GUICtrlSetState($lblPressIP, $GUI_HIDE)
GUICtrlSetState($lblPressIPInput, $GUI_HIDE)
GUICtrlSetState($lblPressEM, $GUI_HIDE)
GUICtrlSetState($lblPressEMInput, $GUI_HIDE)
GUICtrlSetState($CHK_PURGEBACKUP, $GUI_HIDE)
GUICtrlSetState($CHK_BACKUPDATA, $GUI_HIDE)
EndFunc
Func _showtab2()
GUICtrlSetState($lblHead, $GUI_show)
GUICtrlSetState($lblHeadGr, $GUI_show)
GUICtrlSetState($lblReadLic, $GUI_show)
GUICtrlSetState($lblLicence, $GUI_show)
GUICtrlSetState($lblReadLic, $GUI_show)
GUICtrlSetState($icoHead, $GUI_show)
GUICtrlSetState($lblPress, $GUI_show)
;~ GUICtrlSetState($richEditLic, $GUI_show)
GUICtrlSetState($radio_ablehnen, $GUI_show)
;~ GUICtrlSetState($radio_annehmen, $GUI_show)
GUICtrlSetState($btnBack1, $GUI_show)
GUICtrlSetState($btnNext1, $GUI_show)
;~ GUICtrlSetState($radio_annehmen, $GUI_show)
GUICtrlSetState($radio_ablehnen, $GUI_show)
GUICtrlSetState($lblPressInput, $GUI_show)
GUICtrlSetState($lblPressUN, $GUI_show)
GUICtrlSetState($lblPressUNInput, $GUI_show)
GUICtrlSetState($lblPressIP, $GUI_show)
GUICtrlSetState($lblPressIPInput, $GUI_show)
GUICtrlSetState($lblPressEM, $GUI_show)
GUICtrlSetState($lblPressEMInput, $GUI_show)
GUICtrlSetState($CHK_PURGEBACKUP, $GUI_show)
GUICtrlSetState($CHK_BACKUPDATA, $GUI_show)
GUICtrlSetState($btnNext1, $GUI_FOCUS)
EndFunc
Func _showtab3()
GUICtrlSetState($lblHead2, $GUI_show)
GUICtrlSetState($lblHeadGr2, $GUI_show)
GUICtrlSetState($instTo, $GUI_show)
GUICtrlSetState($target, $GUI_show)
GUICtrlSetState($inptDir, $GUI_show)
GUICtrlSetState($btnDir, $GUI_show)
GUICtrlSetState($lblNeSp, $GUI_show)
GUICtrlSetState($lblAvSp, $GUI_show)
GUICtrlSetState($lblLicence2, $GUI_show)
GUICtrlSetState($lblReadLic2, $GUI_show)
GUICtrlSetState($icoHead2, $GUI_show)
GUICtrlSetState($btnBack2, $GUI_show)
GUICtrlSetState($btnNext2, $GUI_show)
GUICtrlSetState($btnNext2, $GUI_FOCUS)
EndFunc
Func _hidetab3()
GUICtrlSetState($lblHead2, $GUI_HIDE)
GUICtrlSetState($lblHeadGr2, $GUI_HIDE)
GUICtrlSetState($instTo, $GUI_HIDE)
GUICtrlSetState($target, $GUI_HIDE)
GUICtrlSetState($inptDir, $GUI_HIDE)
GUICtrlSetState($btnDir, $GUI_HIDE)
GUICtrlSetState($lblNeSp, $GUI_HIDE)
GUICtrlSetState($lblAvSp, $GUI_HIDE)
GUICtrlSetState($lblLicence2, $GUI_HIDE)
GUICtrlSetState($lblReadLic2, $GUI_HIDE)
GUICtrlSetState($icoHead2, $GUI_HIDE)
GUICtrlSetState($btnBack2, $GUI_HIDE)
GUICtrlSetState($btnNext2, $GUI_HIDE)
EndFunc
Func _showtab1()
GUICtrlSetState($picWiz, $GUI_show)
GUICtrlSetState($labWhite, $GUI_show)
GUICtrlSetState($labWelc, $GUI_show)
GUICtrlSetState($labAssist, $GUI_show)
GUICtrlSetState($btnNext0, $GUI_show)
GUICtrlSetState($btnNext0, $GUI_FOCUS)
EndFunc
Func _hidetab1()
GUICtrlSetState($picWiz, $GUI_HIDE)
GUICtrlSetState($labWhite, $GUI_HIDE)
GUICtrlSetState($labWelc, $GUI_HIDE)
GUICtrlSetState($labAssist, $GUI_HIDE)
GUICtrlSetState($btnNext0, $GUI_HIDE)
EndFunc
Func _showtab4()
GUICtrlSetState($lblHead3, $GUI_show)
GUICtrlSetState($lblHeadGr3, $GUI_show)
GUICtrlSetState($lblLicence3, $GUI_show)
GUICtrlSetState($lblReadLic3, $GUI_show)
GUICtrlSetState($icoHead3, $GUI_show)
GUICtrlSetState($btnBack3, $GUI_show)
GUICtrlSetState($btnNext3, $GUI_show)
GUICtrlSetState($prog, $GUI_show)
GUICtrlSetState($instListView, $GUI_show)
GUICtrlSetState($btnNext3, $GUI_FOCUS)
EndFunc
Func _hidetab4()
GUICtrlSetState($lblHead3, $GUI_HIDE)
GUICtrlSetState($lblHeadGr3, $GUI_HIDE)
GUICtrlSetState($lblLicence3, $GUI_HIDE)
GUICtrlSetState($lblReadLic3, $GUI_HIDE)
GUICtrlSetState($icoHead3, $GUI_HIDE)
GUICtrlSetState($btnBack3, $GUI_HIDE)
GUICtrlSetState($btnNext3, $GUI_HIDE)
GUICtrlSetState($prog, $GUI_HIDE)
GUICtrlSetState($instListView, $GUI_HIDE)
EndFunc
Func _showtab5()
GUICtrlSetState($lblHead4, $GUI_show)
GUICtrlSetState($lblHeadGr4, $GUI_show)
GUICtrlSetState($lblLicence4, $GUI_show)
GUICtrlSetState($lblReadLic4, $GUI_show)
GUICtrlSetState($icoHead4, $GUI_show)
;~ GUICtrlSetState($btnBack3, $GUI_show)
GUICtrlSetState($btnNext4, $GUI_show)
GUICtrlSetState($EXITBTN, $GUI_HIDE)
GUICtrlSetState($CHKSTARTMENU, $GUI_show)
GUICtrlSetState($CHKLINKDESKTOP, $GUI_show)
GUICtrlSetState($CHKSTARTAFTERINSTALL, $GUI_show)
GUICtrlSetState($CHKLINKTASK, $GUI_show)
GUICtrlSetState($btnNext4, $GUI_ENABLE)
GUICtrlSetState($btnNext4, $GUI_FOCUS)
EndFunc
Func _hidetab5()
GUICtrlSetState($lblHead4, $GUI_HIDE)
GUICtrlSetState($lblHeadGr4, $GUI_HIDE)
GUICtrlSetState($lblLicence4, $GUI_HIDE)
GUICtrlSetState($lblReadLic4, $GUI_HIDE)
GUICtrlSetState($icoHead4, $GUI_HIDE)
;~ GUICtrlSetState($btnBack3, $GUI_HIDE)
GUICtrlSetState($btnNext4, $GUI_HIDE)
GUICtrlSetState($CHKSTARTMENU, $GUI_HIDE)
GUICtrlSetState($CHKLINKDESKTOP, $GUI_HIDE)
GUICtrlSetState($CHKLINKTASK, $GUI_HIDE)
GUICtrlSetState($CHKSTARTAFTERINSTALL, $GUI_HIDE)
GUICtrlSetState($EXITBTN, $GUI_show)
EndFunc
#EndRegion
Alles anzeigen