Hi @ all,
Kann man mit FileInstall einen Ganze Ordner in das >Skript einbinden und beispielsweise auf dem Desktop
wieder einfügen? oder geht das Irgendwie?
Mit FileInstall kompletten Ordner in das Skript einbinden?
-
- [ offen ]
-
Lololo124 -
11. September 2009 um 20:15 -
Geschlossen -
Erledigt
-
-
nein,
musst jede Datei einzeln einbinden. -
- Offizieller Beitrag
Falls das zu viele Dateien sind, kannst Du sie ja vorher packen (z.B. als ZIP) und dann mit FileInstall einbinden.
-
Im Compiler gibt es den Reiter "Run Before/Afer". Dort eine Batch-Datei oder Exedatei aufrufen.
Beispeil:
start bevor.bat "%out%" "C:\Scripte\AutoIt3\SciTE\aktuelles_script\"Diese Datei (bevor.bat) die Du dort startes, muß folgendes machen: (geht auch mit einer Text-Datei)
1.) Ordner in eine INI schreiben:[ordner]
ordnername = aktuell2.) Dateipfade in die INI schreiben, die dann so aus schaut:
[ordner]
ordnername = aktuell[dateien]
datei[0] = c:\bsp\test\aktuell\test_01.au3
datei[1] = c:\bsp\test\aktuell\test_01.exe
datei[2] = c:\bsp\test\aktuell\test_koe.au3
datei[3] = c:\bsp\test\aktuell\test_koe.exe
datei[4] = c:\bsp\test\aktuell\test_loe.dll
datei[5] = c:\bsp\test\aktuell\test_koe.hlp
datei[6] = c:\bsp\test\aktuell\test_koe.abcWenn die INI-Datei richtig erstellt ist, dann mit dem IniRead auslesen und mit FileInstall in die Datei aufnehmen.
Wenn ich jetzt auf die schnelle sagen könnte, wie Teil eins und Teil zwei zu programmieren wären, würde ich es glatt posten.Aber versuche Dich selber mal und wir helfen gerne bei Fragen. Es gibt aber eine super DEUTSCHE HILFE und beim duruchlesen lernst Du auch noch hammer viel.
Edit:
BugFix hat mal die Funktion "_GetFilesFolder_Rekursiv" entwickelt. Ist über die Suchfunktion zu finden. Ist unter Scripte auf jeden Fall zu finden, da es da um MutiCopy geht. -
Alina: Das funktioniert nicht, da die Quelle bei Fileinstall keine Variable sein darf.
-
Ich möchte auch nicht mit Variablen direkt arbeiten, sondern aus der dann entstandenen INI könnte mit das Script dann erstellen lassen, das dann die FileInstall-Dateien einlesen würde.
Ich denke da an einen Scriptschreibeprogramm.
1. Text-Datei (anfang.txt)
Alle Zeilen die vor den FileInstall Zeilen sind.2.) Text-Datei (mitte.txt)
Alle Zeilen mit einem FileInstall3.) Text-Datei (ende.txt)
Alle Zeilen die nach den FileInstall Zeilen sindDanach die drei Text-Dateien zusammen in eine AU3-Datei (alles.au3) zusammenfassen.
-
Hi,
ich habe mal in meinem Fundus folgendes aufgestöbert, ggf kann es ja der eine oder andere gebrauchen...
Die einzubindenden Dateien werden im Dialog ausgewählt und die Fileinstall()-Anweisung in den Quellcode geschrieben, Gimmick ist auch die mögliche Auswahl von AutoIt-Macros für das Zielverzeichnis z.B. @scriptdir\test\Spoiler anzeigen
[autoit];MultiFileInstall MFI von [email='Andy@autoIt.de'][/email]
[/autoit] [autoit][/autoit] [autoit]
;schreibt Fileinstallanweisung(en) in den Quellcode
;
;Es wird zunächst eine Sicherungskopie des Quellcodes erstellt und danach wird
;die vollständige(n) Fileinstall()-Anweisung(en) in den Quellcode geschrieben
;Es können mehrere Dateien ausgewählt werden, die eingebunden werden können$split = StringSplit(FileOpenDialog("Datei(en) auswählen, welche mit FileInstall() eingebunden werden sollen", @ScriptDir, "Alle (*.*)", 1 + 2 + 4), "|", 2)
[/autoit] [autoit][/autoit] [autoit]
If $split[0] = "" Then Exit ;abgebrochenDo ;schleife solange bis regulärer Pfad eingegeben wurde
[/autoit] [autoit][/autoit] [autoit]
$dest = InputBox("MultiFileInstall", _
"Bitte das Unterverzeichnis angeben, in das die eingebundenen Dateien entpackt werden sollen." & @CRLF & _
"Erlaubt ist jede reguläre Pfadangabe wie z.B C:\Dateien\Test\ oder auch" & @CRLF & _
"@AppDataDir Pfad zu den Anwendungsdaten des aktuellen Benutzers " & @CRLF & _
"@CommonFilesDir Pfad zum Ordner ""Gemeinsame Dateien"" " & @CRLF & _
"@DesktopDir Pfad zum Desktop des aktuellen Benutzers " & @CRLF & _
"@MyDocumentsDir Pfad zu ""Eigene Dateien"" des aktuellen Benutzers " & @CRLF & _
"@ScriptDir Verzeichnis des laufenden Skriptes " & @CRLF & _
"@TempDir Pfad zum Temp-Verzeichnis " & @CRLF & _
"" & @CRLF & _
"Bitte den abschließenden Backslash \ nicht vergessen!", "@scriptdir" & "\", "", 500, 260)If @error = 1 Then Exit ;abbrechen gedrückt
[/autoit] [autoit][/autoit] [autoit]
$macro = ""
If StringLeft($dest, 1) = "@" Then ;Macro im string
$macro = StringLeft($dest, StringInStr($dest, "\") - 1)
$path = Execute($macro)
Else
$path = $dest
EndIf
;thx an Bugfix für regex http://www.bug-fix.info/PathCheck.htm
Until StringRegExp($path, "((?<!.)([a-zA-Z]\:\\)(?!\s)(([\w-+.]*((?<!\s)(\s{1})(?!\\)|(?<!\\)(\\{1})(?!\s))*)*)(\\?)(?!.))") ;solange, bis string ein Pfad istIf $macro <> "" Then ;macrostring für fileinstall aufbereiten
[/autoit] [autoit][/autoit] [autoit]
$path1 = StringReplace($dest, $macro, "")
$path = $macro & "&""" & $path1 & """"
Else ;"normaler" Pfad angegeben
$path = """" & $path & """"
EndIf$string = "Dircreate(" & $path & ")" & @CRLF ;Verzeichnis muss erstellt werden
[/autoit] [autoit][/autoit] [autoit]
If UBound($split) <> 1 Then ;mehrere Dateien wurden ausgewählt
$pfad = $split[0] & "\" ;Dateipfad
For $i = 0 To UBound($split) - 2 ;string mit fileinstall("Dateiname") schreiben
$string &= "fileinstall(""" & $pfad & $split[$i + 1] & """," & $path & ")" & @CRLF
Next
Else ;nur eine Datei wurde ausgewählt
$string &= "fileinstall(""" & $split[0] & """," & $path & ")" & @CRLF
EndIf$installfile = FileOpenDialog("AutoIt-Datei auswählen, in welche die FileInstall()-Dateien eingebunden werden soll", @ScriptDir, "AutoIt (*.au3)", 1 + 2)
[/autoit] [autoit][/autoit] [autoit]
if @error then exit ;dialog geschlossen
If $installfile = "" Then ;abgebrochen
MsgBox(262144 + 48, "MultiFileinstall", "Es muss eine AutoIt-Datei ausgewählt werden, Programm wird beendet!")
Exit
EndIf
$bakfile = StringReplace($installfile, ".", "_BAKfileinstall.") ;name sicherungskopie
FileCopy($installfile, $bakfile, 1) ;sicherungskopie erstellen
If @error Then _exit()
$string &= FileRead($installfile) ;dateiinhalt auslesen
If @error Then _exit()
FileDelete($installfile) ;datei löschen
If @error Then _exit()
FileWrite($installfile, $string) ;fileinstall und dateiinhalt schreiben
If @error Then _exit()
MsgBox(262144 + 64, "MultiFileinstall", "Zeilen mit FileInstall() in " & $installfile & " eingefügt." & @CRLF & "Sicherungskopie " & $bakfile & " wurde erstellt!")Func _exit()
[/autoit]
MsgBox(262144 + 48, "MultiFileinstall", "Es ist ein Fehler aufgetreten, Programm wird beendet!")
Exit
EndFunc ;==>_exit