UDF Installer testen

  • Hallo,
    Aus Zeitmangel (und da 4 Augen immer noch besser sehen als 2) mach ich mal einen Thread hierfür auf:

    Ich wäre froh, wenn jemand mal ein paar UDFs durchtesten könnte. Mein script soll sie "installieren". Sprich ins include verzeichnis packen und die Calltips einbinden.
    Ist natürlich erst eine Alpha, aber ich will garnicht erst Fehler auftreten lassen..

    Also:
    Mein Script starten, UDF "installieren", Scite neu starten, Calltips überprüfen.
    Wäre toll!

    Wenn jemand Fehler findet natürlich auch bitte bescheid sagen.

    Ich danke euch.

    Spoiler anzeigen
    [autoit]

    #include <String.au3>
    #include <Array.au3>

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

    $File = FileOpenDialog("","","AutoIt UDF's (*.au3)")
    If @error Then exit
    $FileName = StringRegExp($File,"(?<=\\)[\w\d]+\.[\w\d]+$",3)

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

    $aArray = StringRegExp(FileRead($File),"(?<=Func )_?[a-zA-Z0-9]+\(.*\)",3)
    For $i = 0 to UBound($aArray)-1
    ;~ StringStripWS($aArray[$i],8)
    $aArray[$i] = StringRegExpReplace(StringRegExpReplace($aArray[$i],"\,\$\w+=[""'\w]+|\$\w+=[""'\w]+","[$0"),"\[,|\["," $0")
    $iCount = @extended
    $aArray[$i] = StringRegExpReplace(StringRegExpReplace($aArray[$i],"\)$",_StringRepeat("]",$iCount)&"$0"),"\( ","(")
    $aArray[$i] = StringStripWS($aArray[$i],7) & " Requires: #Include <"&$FileName[0]&">"
    Next
    ;~ _ArrayDisplay($aArray)
    $string = _ArrayToString($aArray,@CRLF)

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

    $AutoItDir = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt","InstallDir")
    FileCopy($File,$AutoItDir&"\Include\"&$FileName[0])
    $hCalltips = FileOpen($AutoItDir&"\SciTE\api\au3.user.calltips.api",1)
    FileWrite($hCalltips,@CRLF&$string)
    FileClose($hCalltips)
    ShellExecute($AutoItDir&"\Include\")

    [/autoit]
  • Wie wärs mit ner Ordnerabfrage. Dann kann man einfach einen ganzen Ordner installieren, oder du machst mehrere FileOpenDialog-Abfragen hintereiander, damit man das Programm nicht mehrmals starten muss, wenn die UDFs in verschiedenen Ordnern sind.

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Danke für das Feedback, aber ich habe halt heute nur schnell die RegExe geschrieben. Das ganze wird noch viel viel viel viel mehr ausgebaut; Werde das zu gegebener Zeit auch im Projekt-/Skriptbereich im Forum weiterführen. Es hätte ja sein können, dass es bei jemandem GARNICHT funktioniert, und ich hätte umdenken müssen.

    BugFix ich erinnere mich schwach, dass ich mal in einem Thread von dir etwas gesehen hatte, wo Änderungen an SciTE sofort und ohne Neustart übernommen wurden. Weißt du vielleicht noch wo das genau war? Sowas wäre ja für einen UDF installer sehr praktisch.

  • BugFix ich erinnere mich schwach, dass ich mal in einem Thread von dir etwas gesehen hatte, wo Änderungen an SciTE sofort und ohne Neustart übernommen wurden. Weißt du vielleicht noch wo das genau war? Sowas wäre ja für einen UDF installer sehr praktisch.


    In der neuen OrganizeIncludes-beta ist jedenfalls so was eingebaut.
    Die User Include dirs haben aber nichts mit SciTe zu tun, sondern nur mit AutioIt, diese müssen in der Registry eingetragen werden:

    Zitat


    Es gibt einen besonderen Registrywert, namens "Include" welche in "HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt" erstellt wurde. Es sollte ein REG_SZ (Zeichenkette) Wert sein. Die Inhalte dieses Wertes sind durch ein Semikolon getrennte Verzeichnisse, welche zusätzlich zu den Standardordnern durchsucht werden sollten, wenn #include's im Skript angegeben wird.

  • BugFix
    Dein Beitrag von Gestern, 20:18 kann ich nur sagen, das ich meine Includes auf einer anderen HDD sogar habe und sie über die Registry einlese. Habe folgenden Eintrag in der Registry: autoit.de/wcf/attachment/7238/

    AutoIt-Script der es für mich macht:

    Spoiler anzeigen
    [autoit]


    SetIncludePaths("D:\AutoIT\Include")
    Exit
    Func SetIncludePaths($meineincludes)
    Local $sorp = ""
    Local $inclu = RegRead("HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt", "Include")
    Local $orgincl = RegRead("HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt", "OrgInclude")
    If @error <> 0 Then
    RegWrite("HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt", "OrgInclude", "REG_SZ", $inclu)
    $orgincl = $inclu
    EndIf
    If $orgincl <> "" Then $sorp = ";"
    If $inclu <> $orgincl & $sorp & $meineincludes Then
    RegWrite("HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt", "Include", "REG_SZ", $orgincl & $sorp & $meineincludes)
    EndIf
    EndFunc

    [/autoit]

    Und wenn dort neue Include-Dateien drinne sind, kann man die auch sofort übernehmen. Nur einmal nach dem ausführen des Scriptes, den PC neu starten, da etwas in der Registry verändert wurde und das aufgenommen werden muss.

    Vorteil ist bei der Art die Includes zu nutzen, das man sie nie verliert, wenn man man die OS/BS Pat. löschen muss/möchte/will. ;)

    Mein Motto ist: Alle da rein die nicht zur Grundausführung von AutoIt gehört und dann klappt es auch schon mit dem ... :whistling:

    Bilder

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr