aktive .exe verschieben

  • Hey

    Ich brauch für mein Script noch eine Funktion, die mir die aktuell laufende .exe beendet, diese dann in ein bestimmtes Verzeichnis verschiebt und die neu entstandene .exe startet.
    Ich hab jetzt für mein aktuelles Projekt soweit alles fertig, selbst den Updater konnte ich erfolgreich einbauen (vielen Dank an Schnuffel für die Funktion).

    Ich könnte das ja alles ohne weiteres mit mehreren Scripten lösen, jedoch möchte ich alles in einer einzigen .exe unterbringen.
    Wie stell ich das an?

  • Spoiler anzeigen
    [autoit]

    Func _Move($pfad)
    FileCopy(@ScriptFullPath,$pfad)
    RunWait($pfad)
    ShellExecute(@ComSpec, "/c ping 0.0.0.1 -n 1 -w 2000 & del " & @ScriptName, @ScriptDir, "open", @SW_HIDE); by SlowlyDead & funkey
    Exit
    EndFunc

    [/autoit]


    Nicht getestet aber ich glaube es sollte gehen

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:


  • Hallo Pro,

    Dein Spoiler funktioniert leider nur zur Hälfte. Es beendet das Programm und verschiebt sie zum Ziel, jedoch wird das dann nicht gestartet.

    Ich hab die Funktion so aufgerufen:

    [autoit]

    Global Const $programmpfad = @UserProfileDir & "\beispielordner\"
    If Not FileExists($programmpfad & "\" & @ScriptName) Then _move($programmpfad & @ScriptName)

    [/autoit]


    Warum klappt es nicht?

  • Bei mir geht es:

    Spoiler anzeigen
    [autoit]

    HotKeySet("{F5}","_m")

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

    While Sleep(4000)
    MsgBox(0,"test",@ScriptDir)
    WEnd

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

    Func _m()
    _Move(@AppDataDir&"\"&@ScriptName)
    EndFunc

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

    Func _Move($pfad)
    FileCopy(@ScriptFullPath,$pfad)
    RunWait($pfad)
    ShellExecute(@ComSpec, "/c ping 0.0.0.1 -n 1 -w 2000 & del " & @ScriptName, @ScriptDir, "open", @SW_HIDE); by SlowlyDead & funkey
    Exit
    EndFunc

    [/autoit]

    Ich sehe grad du hast doppelt "\" aber das wird nicht das problem sein denk ich

    Global Const $programmpfad = @UserProfileDir & "\beispielordner\"
    If Not FileExists($programmpfad & "\" & @ScriptName) Then _move($programmpfad & @ScriptName)

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Spoiler anzeigen
    [autoit]

    MsgBox(0, '', @ScriptFullPath)
    If $CmdLine[0] <> 0 Then
    FileDelete($CmdLine[1])
    Else
    _Move(@DesktopDir)
    EndIf

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

    Func _Move($s_Path)
    FileCopy(@ScriptFullPath, $s_Path)
    ShellExecute($s_Path & '\' & @ScriptName, @ScriptFullPath)
    Exit
    EndFunc

    [/autoit]

    So könnte man es auch versuchen...


  • Hi $var

    Das hat es gebracht! Danke. habe nur aus FileCopy ein FileMove gemacht, damit die Ursprüngliche Datei gelöscht wird.

    Und auch meinen Dank an ProGamer, dass du versucht hast mir zu helfen. :thumbup: