Hi Leute,
ich hätte gerne für mein Script eine Deinstallationsroutine. Ich habe einen "Programm entfernen" Button. Wenn der gedrückt wird, dann werden die ini, Tempfiles und schließlich das Programm selbst gelöscht.
Auf der Suche nach einer "Script-löscht-sich-selbst-Anleitung" bin ich schnell fündig geworden.
Da gibts ja die _SelfDelete udf, die schon in Scite ist.
[autoit]Func _SelfDelete()
Local $cmdfile
FileDelete(@TempDir & "scratch.cmd")
$cmdfile = ':loop' & @CRLF _
& 'del "' & @ScriptFullPath & '"' & @CRLF _
& 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
& 'del ' & @TempDir & 'scratch.cmd'
FileWrite(@TempDir & "scratch.cmd", $cmdfile)
Run(@TempDir & "scratch.cmd", @TempDir, @SW_HIDE)
EndFunc
Ich rufe die Funktion einfach in meiner Aufräumaktion auf. Das funktionierte wunderbar, bis ich das Script kompiliert habe. Als ich testweise versuchte das Programm zu entfernen, wurde nur die scratch.cmd erstellt, aber nicht ausgeführt bzw. löscht nicht erfolgreich
Nach ein paar Tests habe ich festgestellt, dass es nicht funktioniert, wenn die scratch.cmd vom laufenden Programm erstellt wird. Wohl aber klappt das löschen, wenn ich eine bestehende scratch.cmd nicht lösche, sondern ausführe.
So prüfe ich jetzt immer bei Programmstart, ob die Datei besteht, wenn nicht wird sie erstellt..
Das geht erst einmal, ist aber natürlich nicht so dolle. Wie geht ihr denn beim Programm entfernen vor? Woran könnte es liegen, dass es mit der Function nicht klappt?
Ich habe schon eine Pause in die erste Zeile der cmd geschrieben, damit das Programm beim Löschversuch beendet ist.