Mit FileInstall kompletten Ordner in das Skript einbinden?

  • nein,
    musst jede Datei einzeln einbinden.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • 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 = aktuell

    2.) 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.abc


    Wenn 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.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    Einmal editiert, zuletzt von Alina (12. September 2009 um 00:55)

  • funkey

    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 FileInstall

    3.) Text-Datei (ende.txt)
    Alle Zeilen die nach den FileInstall Zeilen sind

    Danach die drei Text-Dateien zusammen in eine AU3-Datei (alles.au3) zusammenfassen.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • 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]
    ;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

    [/autoit] [autoit][/autoit] [autoit]

    $split = StringSplit(FileOpenDialog("Datei(en) auswählen, welche mit FileInstall() eingebunden werden sollen", @ScriptDir, "Alle (*.*)", 1 + 2 + 4), "|", 2)
    If $split[0] = "" Then Exit ;abgebrochen

    [/autoit] [autoit][/autoit] [autoit]

    Do ;schleife solange bis regulärer Pfad eingegeben wurde
    $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)

    [/autoit] [autoit][/autoit] [autoit]

    If @error = 1 Then Exit ;abbrechen gedrückt
    $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 ist

    [/autoit] [autoit][/autoit] [autoit]

    If $macro <> "" Then ;macrostring für fileinstall aufbereiten
    $path1 = StringReplace($dest, $macro, "")
    $path = $macro & "&""" & $path1 & """"
    Else ;"normaler" Pfad angegeben
    $path = """" & $path & """"
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $string = "Dircreate(" & $path & ")" & @CRLF ;Verzeichnis muss erstellt werden
    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

    [/autoit] [autoit][/autoit] [autoit]

    $installfile = FileOpenDialog("AutoIt-Datei auswählen, in welche die FileInstall()-Dateien eingebunden werden soll", @ScriptDir, "AutoIt (*.au3)", 1 + 2)
    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!")

    [/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    MsgBox(262144 + 48, "MultiFileinstall", "Es ist ein Fehler aufgetreten, Programm wird beendet!")
    Exit
    EndFunc ;==>_exit

    [/autoit]