Hallo zusammen,
ich würde gerne mein kleines Projekt verbessern bzw. effizienter gestallten
und bitte euch hiermit um unterstützung.
Ich sag erstmal worum es geht.
Mit einer Installationsroutine die mit InnoSetup erstellt wurde, werden
mehrere Dateien inkl. uninstall installiert.
Der Installationspfad wird in eine .ini Datei ins @WindowsDir geschrieben.
Installiert werden folgende Dateien.
eine MS Access.mdb (für Backend + Frontend betrieb)
eine mousehook.dll (Installpfad) (mouserad ein/aus für mdb file)
eine pfad.ini (@WindowsDir)
eine version.ini (installpfad)
eine readme.txt (Installpfad)
eine hourglass.jpg (Installpfad) für GuiCtrlCreatePic
und natürlich eine AutoIt_Projekt.exe (Installpfad)
1. AutoIt_Projekt.exe prüft ob DriveStatus( "S:\" ) vorhanden, ansonsten
wird DriveMapAdd("S:"... erstellt
2. prüft ob bestimmte Dateien im InstallPfad vorhanden sind, wenn nicht werden ALLE von LW S: kopiert.
3. vergleicht inhalt von version.ini (local) mit version.ini (Netzwerk LW S: )
wenn gleich wird die access.mdb gestartet, ansonsten wird von
Netzwerk LW S: kopiert.
ZIEL:
Punkt 2, nur die Datei kopieren die fehlt und nicht alle
Punkt 3, die Version (Local) sollte irgendwie aus der Windows-registrierung gelesen, bzw geschrieben werden.
Der Installationspfad sollte ebenfalls aus der Windows-Registrierung gelesen werden.
Puh, garnicht so einfach das zu beschreiben.
Achso, bei der Version handelt es sich um eine Änderung in der MDB Datei,
die der User dann per Update (filecopy) von LW S: kopiert.
Ich habe jetzt nicht alles Haarklein beschrieben, ihr werdet bestimmt lachen wenn ihr das script seht, es ist immerhin mein erstes und alles von hier
zusammengesucht.
hier mal das script:
[autoit][/autoit][autoit][/autoit][autoit]#include <Process.au3>
#include <GUIConstants.au3>
If WinExists("TOP-Check-DataBase") Then
WinActivate("TOP-Check-DataBase", "")
Else
$local_pfad = FileReadLine(@WindowsDir&"\Chk_DB_local.ini")
$var = DriveStatus( "S:\" )
if $var = "INVALID" then
If Not IsDeclared("iMsgBoxAnswer") Then Dim $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(36,"Laufwerk S:","Laufwerk S: steht nicht zur Verfügung." & @CRLF & "Soll eine Verbindung zu Laufwerk S: hergestellt werden ?")
Select
Case $iMsgBoxAnswer = 6 ;Yes
DriveMapAdd("S:", "\\xx.xxx.xxx.xx\top", 0, @UserName, "Name")
Case $iMsgBoxAnswer = 7 ;No
Exit
EndSelect
EndIf
$notexists_files = 0
[/autoit][autoit][/autoit][autoit]if Not FileExists( $local_pfad & "\version.ini") Then
$notexists_files = 1
EndIf
If Not FileExists( $local_pfad & "\Check_DataBase.mdb") Then
$notexists_files = 1
EndIf
if Not FileExists( $local_pfad & "\Readme.txt") Then
$notexists_files = 1
EndIf
If Not FileExists( $local_pfad & "\MouseHook.dll") Then
$notexists_files = 1
EndIf
If Not FileExists( $local_pfad & "\hourglass.jpg") Then
$notexists_files = 1
EndIf
if $notexists_files > 0 Then
[/autoit][autoit][/autoit][autoit]If Not IsDeclared("iMsgBoxAnswer") Then Dim $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(36,"missing File..","Es fehlen Dateien im Installationsordner." & @CRLF & "Sollen die Dateien von LW S: kopiert werden ?")
Select
Case $iMsgBoxAnswer = 6 ;Yes
$SPLASH = GUICreate("Check-Database automation",250,140,-1,-1,1)
GUICtrlCreateLabel("FileCopy wird durchgeführt...", 15, 40)
GUISetState()
GuiCtrlCreatePic($local_pfad & "\hourglass.jpg",200,35, 13,22)
GUICtrlCreateLabel("TOP-Check-DataBase wird gestartet...", 15, 65)
FileCopy("S:\TOP\Check_DataBase\Programme\Check_DataBase.mdb", $local_pfad & "\Check_DataBase.mdb", 1)
FileCopy("S:\TOP\Check_DataBase\Programme\version.ini", $local_pfad & "\version.ini", 1)
FileCopy("S:\TOP\Check_DataBase\Programme\Readme.txt", $local_pfad & "\Readme.txt", 1)
FileCopy("S:\TOP\Check_DataBase\Programme\MouseHook.dll", $local_pfad & "\MouseHook.dll", 1)
FileCopy("S:\TOP\Check_DataBase\Programme\hourglass.jpg", $local_pfad & "\hourglass.jpg", 1)
GUICtrlCreateLabel("",200,35,13,22)
GUICtrlCreateLabel("OK", 200, 40)
GUICtrlSetColor(-1,0xff0000)
GuiCtrlCreatePic($local_pfad & "\hourglass.jpg",200,60, 13,22)
GUICtrlCreateLabel("",200,60,13,22)
GUICtrlCreateLabel("OK", 200, 65)
GUICtrlSetColor(-1,0xff0000)
GUISetFont (12,400)
GUICtrlCreateLabel("Complete", 85, 80,-1,-1,-1,-1)
GUICtrlSetColor(-1,0xff0000)
GUIDelete($SPLASH)
;Sleep(5000)
Case $iMsgBoxAnswer = 7 ;No
GUIDelete()
Exit
EndSelect
EndIf
$abf_g = FileReadLine("S:\TOP\Check_DataBase\Programme\version.ini")
$abf_l = FileReadLine( $local_pfad & "\version.ini")
if $abf_l <> $abf_g Then
GUICreate("Update Check-DataBase", 310, 130,-1,-1,1)
$Label = GUICtrlCreateLabel("Aktuelle Version " & $abf_g & ", Installierte Version " & $abf_l & "", 10, 10)
$Label = GUICtrlCreateLabel("Soll das Update durchgeführt werden ?", 10, 40)
$YesID = GUICtrlCreateButton("Yes", 90, 70, 50, 20)
$NoID = GUICtrlCreateButton("No", 160, 70, 50, 20)
GUISetState()
Do
$msg = GUIGetMsg()
Select
Case $msg= $YesID
GUIDelete()
$SPLASH = GUICreate("Check-Database automation",250,140,-1,-1,1)
GUICtrlCreateLabel("Update wird durchgeführt...", 15, 40)
GUISetState()
GuiCtrlCreatePic($local_pfad & "\hourglass.jpg",200,35, 13,22)
GUICtrlCreateLabel("TOP-Check-DataBase wird gestartet...", 15, 65)
FileCopy("S:\TOP\Check_DataBase\Programme\Check_DataBase.mdb", $local_pfad & "\Check_DataBase.mdb", 1)
FileCopy("S:\TOP\Check_DataBase\Programme\version.ini", $local_pfad & "\version.ini", 1)
GUICtrlCreateLabel("",200,35,13,22)
GUICtrlCreateLabel("OK", 200, 40)
GUICtrlSetColor(-1,0xff0000)
GuiCtrlCreatePic($local_pfad & "\hourglass.jpg",200,60, 13,22)
$rc = _RunDos("start " & $local_pfad & "\Check_DataBase.mdb /prefetch:1")
WinWait("TOP-Check-DataBase")
GUICtrlCreateLabel("",200,60,13,22)
GUICtrlCreateLabel("OK", 200, 65)
GUICtrlSetColor(-1,0xff0000)
GUISetFont (12,400)
GUICtrlCreateLabel("Complete", 85, 80,-1,-1,-1,-1)
GUICtrlSetColor(-1,0xff0000)
GUIDelete($SPLASH)
Sleep(5000)
Case $msg= $NoID
GUIDelete()
Exit
EndSelect
Until $msg = $YesID or $msg = $NoID
Else
$rc = _RunDos("start " & $local_pfad & "\Check_DataBase.mdb /prefetch:1")
WinWait("TOP-Check-DataBase")
sleep(5000)
EndIf
EndIf
Ich hoffe ihr blickt da durch was ich hier geschrieben habe.