Hallöle!
Bitte reißt mich nicht außeinander - ich hab mich gestern spontan dazu entschlossen, einen kleinen Installer für eine kleine Mod für ein Spiel in AutoIT zu schreiben. Auch ist AutoIT meine erste Scriptsprache.
Tatsächlich muss dafür bisher nur eine große Datei aus der kompilierten .exe (welche die Mod-Datei enthält) in einen bestimmten Ordner extrahiert werden.
All dies funktioniert bisher auch sehr gut, nur scheitere ich gerade an der ProgressBar. Ich vermute aber allerdings, dass es einen einfachen Grund hat - es ist eine große Datei, daher wird mir kein Fortschritt angezeigt, da die Datei (ca. 120MB) beim extrahieren ja entweder komplett da ist - oder noch nicht. Vielleicht irre ich mich auch.. ach, ich weiß es nicht. Ich würde mich wirklich über eure Hilfe freuen.
Hier ist mal der Code-Auszug:
While 1
$GUI_WELCOME_MSG = GUIGetMsg()
Switch $GUI_WELCOME_MSG
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_WELCOME_BUTTON2
Exit
Case $GUI_WELCOME_BUTTON1
If $OSARCH = "X86" Then
$EP_INSTALLPATH = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\Electronic Arts\The Lord of the Rings, The Rise of the Witch-king", "InstallPath")
ElseIf $OSARCH = "X64" Then
$EP_INSTALLPATH = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Electronic Arts\Electronic Arts\The Lord of the Rings, The Rise of the Witch-king", "InstallPath")
EndIf
GUISetState(@SW_DISABLE,$GUI_WELCOME_NAME)
$GUI_WELCOME_REQUEST = MsgBox(3,"BSA Installer","Wollen Sie die Balance SubMod jetzt installieren?")
Switch $GUI_WELCOME_REQUEST
Case $IDCANCEL
GUISetState(@SW_ENABLE,$GUI_WELCOME_NAME)
GUISetState(@SW_SHOW,$GUI_WELCOME_NAME)
Case $IDNO
Exit
Case $IDYES
GUIDelete($GUI_WELCOME_NAME)
ProgressOn("BSA Installer", "Installiere...","")
$TEMPDIR_SIZE = DirGetSize(@TempDir)
While $TEMPDIR_SIZE < $EP_INSTALLPATH+$FILESIZE
If $TEMPDIR_SIZE Then
$PROGRESS_PERCENT = 100/($TEMPDIR_SIZE+$FILESIZE)*$TEMPDIR_SIZE
ProgressSet($PROGRESS_PERCENT)
EndIf
Sleep(100)
WEnd
FileInstall("______BS_alpha_0.01.big",$EP_INSTALLPATH)
ProgressSet (100, "Fertig!")
Sleep(2000)
ProgressOff()
$GUI_WELCOME_DONE = MsgBox(0,"BSA Installer", "Installation abgeschlossen!")
If $GUI_WELCOME_DONE = $IDOK then Exit
EndSwitch
EndSwitch
WEnd
Alles anzeigen
Vielen Dank an dieser Stelle!
Grüße,
shanks