Update funktion soll versionen von exe dateien vergleichen

  • Hallo
    Ich will ein Updateprogramm erstellen welches anhand der Versionsnummer einer Exe-datei erkennt ob ein Update durchgeführt werden muß.
    Auf einen Externen Datenträger( CD USB-Stick...) sollen am ende das Update-programm und Updates zu verschiedennen Programmen liegen.

    Ich hab mir überlegt ich wähle in dem Programm eine aktuelle Exe-datei vom Datenträger, durchsuche dann automatisch die Festplatte c ob dort ebenfalls eine EXE mit selben Namen existiert und vergleiche anschließend die Versionsnummern der Dateien.
    Hierzu hab ich ein paar fragen:

    1:Mit

    [autoit]

    $GewaehlteDatei = FileOpenDialog("", "", "exe (*.exe;)", 1) ;exe datei auswählen

    [/autoit]


    kann ich eine exe Datei auswählen, der Rückgabewert entspricht aber dem kompletten pfad der datei. (C:\DATEN\test.exe) wie bekomm ich nur den Namen der Datei(in diesem fall test.exe)

    2:Mit

    [autoit]

    $version = FileGetVersion ( $Gewaehltedatei )

    [/autoit]


    bekomm ich die Versionsnummern der Dateien. Diese sind immer nach dem Schema 1.2.3.0 aufgebaut.
    Ändert sich die 3.Zahl handelt es sich um eine Bugfixversion und nur die alte exe-datei muss geändert werden
    Ändert sich die 2.Zahl ist es eine neue Version und es müssen noch zugehörige Dateien (ddl, txt...) getauscht werden.
    Wenn sich die erste Zahl ändert handelt es sich um eine inkompatiblen Version und es darf nichts upgedatet werden.
    Meine Frage hierzu: wie bekomme ich es hin die durch punkte getrennten zahlen zu vereinzeln damit ich sie besser vergleichen kann.

    Einmal editiert, zuletzt von hanswurst (30. Mai 2008 um 09:47)

  • [autoit]

    $Versionsplit = Stringsplit($Version, ".")

    [/autoit]

    Übersichtlich anschauen kannste es mit _arraydisplay($versionsplit), fals du keine Ahnung hast wie Stringsplit die arrays erstellt.
    ($versionsplit[0] = Anzahl der arrays, $Versionsplit[1] = erste zahl ....)

  • Bei Version 1.2.3.0
    entspicht dann $Versionsplit[1] =1, $Versionsplit[2] =2,$Versionsplit[3] =3 ,$Versionsplit[4]=0

    Vergleichen könnte ich die dann ja z.b. einfach mit :
    If $VersionA[2] < $versionB[2]

    Danke für den Tip!!! Punkt zwei wäre dann ja schon mal gelöst

    Einmal editiert, zuletzt von hanswurst (29. Mai 2008 um 14:28)

  • Zitat

    $GewaehlteDatei = FileOpenDialog("", "", "exe (*.exe;)", 1) ;exe datei auswählen


    zu Deinem ersten Problem,
    selbes Prinzip:

    Spoiler anzeigen
    [autoit]

    $GewaehlteDatei = StringSplit(FileOpenDialog("", "", "exe (*.exe)", 1),"\") ;exe datei auswählen
    ;Dateiname:
    msgbox(0,"",$GewaehlteDatei[$GewaehlteDatei[0]]); $GewaehlteDatei[0] entspricht dabei der Anzahl Einträge im Array

    [/autoit]

    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. ;)

  • Ok Danke, jetzt hab ich auch kapiert wie Stringsplit genau arbeitet

    Edit: hat sich Erledigt

    2 Mal editiert, zuletzt von hanswurst (30. Mai 2008 um 09:46)