Hi. Ich habe gedacht ich eröffne mal den Mültonnen Thread.
Hier könnte man vllt Projekte Post, die zwar schon funktions Fähig sind, aber halt noch nicht komplett. Oder wenn ihr fast fertig seit und einfach keine Zeit oderso habt.
Ich fang gleich mal an:
Ich wollte ein Script machen, das eine Setup.exe erstellt.
Zuvor werden natürlich die Dateien usw. Hinzugefügt ....
Aber ich komme nicht weiter und ich denke die Probleme (AutoIt Abstürze ab 1000 Dateien) usw können nur schwer oder warschienlich garnicht behoben werden.
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
FileInstall("Installer Logo.jpg", @TempDir & "\Installer Logo.jpg")
FileInstall("Installer.au3", @TempDir & "\Installer.au3")
FileInstall("Installation GUI.au3", @TempDir & "\Installation GUI.au3")
#Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\lenny\eigene dateien\wichtig install creater.kxf
$Installation = GUICreate("Installation Script Creater.", 474, 372, 193, 134, -1, 0x00000018)
GUISetBkColor(0xFFFFFF)
$Label1 = GUICtrlCreateLabel("Fügen sie die Dateien über Drag and Drop hinzu, oder benutzen sie den *Hinzufügen* Button.", 8, 8, 445, 17, -1)
$Edit1 = GUICtrlCreateEdit("", 8, 40, 329, 321, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $ES_READONLY, $WS_VSCROLL, $WS_HSCROLL))
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x000000)
$Button1 = GUICtrlCreateButton("Datei Hizufügen", 352, 40, 107, 25, 0)
$Button2 = GUICtrlCreateButton("Löschen", 352, 120, 107, 25, 0)
$Button3 = GUICtrlCreateButton("Ordner Hizufügen", 352, 80, 107, 25, 0)
$Button5 = GUICtrlCreateButton("Struktur Anzeigen", 352, 160, 107, 25, 0)
$Button4 = GUICtrlCreateButton("Weiter", 352, 328, 105, 33, 0)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Func _gui2()
#Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Lenny\Eigene Dateien\install creater _ Options.kxf
Global $InstallationOpt = GUICreate("Installation Script Creater.", 474, 374, 193, 134)
GUISetBkColor(0xFFFFFF)
Global $Label1a = GUICtrlCreateLabel("Stellen sie die übrigen Optionen ein:", 16, 8, 217, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Global $Button2a = GUICtrlCreateButton("Durchsuchen", 352, 272, 107, 25, 0)
Global $Button4a = GUICtrlCreateButton("Installationsprogramm erstellen!", 16, 328, 441, 33, 0)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
Global $Label2a = GUICtrlCreateLabel("Titel des Installations Programms:", 16, 56, 160, 17)
Global $Input3a = GUICtrlCreateInput("", 16, 80, 313, 21)
Global $Label3a = GUICtrlCreateLabel("AGB des Installations Programms:", 16, 120, 162, 17)
Global $Input2a = GUICtrlCreateInput("", 16, 144, 313, 21)
Global $Label4a = GUICtrlCreateLabel("Hersteller:", 16, 184, 51, 17)
Global $Input1a = GUICtrlCreateInput("", 16, 208, 313, 21)
Global $Label5a = GUICtrlCreateLabel("[Icon]", 16, 272, 31, 17)
Global $Input4a = GUICtrlCreateInput("", 72, 272, 257, 21)
Global $Button1a = GUICtrlCreateButton("Durchsuchen", 352, 144, 107, 25, 0)
GUISetState(@SW_SHOW)
While 2
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1a
$hAgb = FileOpenDialog("AGB", @WorkingDir, "TXT Dateien (*.txt)")
GUICtrlSetData($Input2a, $hAgb)
GUICtrlSetState($Input2a, $GUI_DISABLE)
Case $Button2a
$hIco = FileOpenDialog("ICONs 32x32", @WorkingDir, "Ico Dateien (*.ico)")
GUICtrlSetData($Input4a, $hIco)
GUICtrlSetState($Input4a, $GUI_DISABLE)
Case $Button4a
_FileWriteToLine(@TempDir & "\Installer.au3", 8, 'FileInstall("' & GUICtrlRead($Input2a) & '",@Tempdir & "\agb.txt")')
$lInOp = FileOpen(@TempDir & "\Installer.au3", 1)
$hInstaller = StringSplit($hFiles, @CRLF, 1)
$2count = $hInstaller[0]
For $i = 1 To $2count - 1
If FileGetAttrib($hInstaller[$i]) = "D" Then
$StartPfad = $hInstaller[$i]
$FileTyp = '*'
$aFiles = _GetFilesFolder_Rekursiv($StartPfad, $FileTyp, 0)
$fileonserver = @UserName & '_' & @MIN & '.txt'
For $i = 1 To $aFiles[0] - 1
FileWriteLine($lInOp, 'FileInstall("' & $aFiles[$i] & '",$Input1 )')
If @error Then ExitLoop
Next
EndIf
FileWriteLine($lInOp, 'FileInstall("' & $hInstaller[$i] & '",$Input1 )')
Next
FileWriteLine($lInOp, 'Endif' & @CRLF & 'Endfunc')
FileClose($lInOp)
Sleep(1000)
EndSwitch
WEnd
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_gui2
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$sText = GUICtrlRead($Edit1)
$hFile = FileOpenDialog("Datei Hinzufügen", @WorkingDir, "All Files (*.*)", 4 +
GUICtrlSetData($Edit1, $sText & $hFile & @CRLF)
Case $Button2
GUICtrlSetData($Edit1, "")
Case $Button3
$sText = GUICtrlRead($Edit1)
$hFolder = FileSelectFolder("Ordner Hinzufügen", @HomeDrive, "", @WorkingDir)
$aSplit = StringSplit($hFolder, "\")
$aCount = $aSplit[0]
GUICtrlSetData($Edit1, $sText & $hFolder & @CRLF)
Case $Button5
If GUICtrlRead($Button5) = "Struktur Anzeigen" Then
Global $Old = GUICtrlRead($Edit1)
GUICtrlSetState($Edit1, $GUI_NODROPACCEPTED)
GUICtrlSetData($Button5, "Pfad Anzeigen")
GUICtrlSetState($Button1, $GUI_DISABLE)
GUICtrlSetState($Button3, $GUI_DISABLE)
GUICtrlSetState($Button2, $GUI_DISABLE)
$sTexto = GUICtrlRead($Edit1)
If $sTexto = "" Then
Sleep(1000)
GUICtrlSetData($Button5, "Struktur Anzeigen")
Else
GUICtrlSetData($Edit1, "")
$hNew = StringSplit($Old, @CRLF, 1)
For $i = 1 To $hNew[0] - 1
$aNew = StringSplit($hNew[$i], "\")
$count = $aNew[0]
$iText = GUICtrlRead($Edit1)
If FileGetAttrib($hNew[$i]) = "D" Then
GUICtrlSetData($Edit1, $iText & "\" & $aNew[$count] & "\ Alle Dateien." & @CRLF)
Else
GUICtrlSetData($Edit1, $iText & "\" & $aNew[$count] & @CRLF)
EndIf
Next
EndIf
Else
GUICtrlSetData($Edit1, $Old)
GUICtrlSetState($Edit1, $GUI_DROPACCEPTED)
GUICtrlSetData($Button5, "Struktur Anzeigen")
GUICtrlSetState($Button1, $GUI_ENABLE)
GUICtrlSetState($Button3, $GUI_ENABLE)
GUICtrlSetState($Button2, $GUI_ENABLE)
EndIf
Case $Button4
GUISetState(@SW_HIDE)
Global $hFiles = GUICtrlRead($Edit1)
_gui2()
EndSwitch
WEnd
Func _GetFilesFolder_Rekursiv($sPath, $sExt = '*', $iDir = -1, $iRetType = 0, $sDelim = '0')
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Global $strFiles = ''
Switch $sDelim
Case '1'
$sDelim = @CR
Case '2'
$sDelim = @LF
Case Else
$sDelim = @CRLF
EndSwitch
If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath), $sExt, $iDir, $sDelim)
If $iRetType = 0 Then
Local $aOut
$aOut = StringSplit(StringTrimRight($strFiles, 1), $sDelim, 1)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
Else
Return StringTrimRight($strFiles, 1)
EndIf
EndFunc ;==>_GetFilesFolder_Rekursiv
Func _ShowSubFolders($Folder, $Ext = '*', $Dir = -1, $Delim = @CRLF)
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & $Delim
Else
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc ;==>_ShowSubFolders
Das ist das HauptScript. Es ist 100 % Funktionstüchtig und schreibt auch alle FileInstalls soweit korrekt in die Installer.au3.
Ab 1000 Dateien aber kann man das script nicht mehr ausführen. Memory Fehler usw.
Die Zusätzlichen dateien die Ihr bracuht findet ihr in dem Zip Archiv das ich rangehängt habe.
Die Funktionen Titel und Icon sind noch nicht Funktionstüchtig.
Außerdem habe ich an der Struktur nicht weiter gearbeitet (Jetzt Installiert er alle Dateien in den Selben Ordner.)
Aber ich denke im Großen und ganzen ist das Script, bis auf die begrenzung der Dateien, für mich, als Anfänger, ganz okay.
Und Vllt kann irgendjemand auf dieser kleien Welt noch etwas damit anfangen
Naja.
Lg,
Lenny
Ps. Ich würde die Installation GUI.au3 und die Installer.au3 nicht verändern. Auszuführen ist denn natürlich die Install Maker.au3. Die anderen beiden werden erst Dynamisch geschrieben.