Тема: AHK: Обновление скрипта AHK
Приветствую всех!
Столкнулся с проблемой, взял часть скрипта у одного человека в этой теме, что-то сделал под себя, но почему то скрипт работает не корректно.
При запуске если видит обновление, то он предлагает обновить, допустим мы соглашаемся, обновление проходит, скрипт скачивается в определенную папку и запускается, но он не копируется с помощью функции "Update" и собственно не удаляется уже скачанный файл через "TempDelete".
Уже много чего перепробовал, ничего не получается. Надеюсь на помощь.
Loop %0%{
ComParam%A_Index% := %A_Index%
}
#SingleInstance Force
#NoEnv
Version := 1.00
TrayTip, AHK MoH (%GuiVersion%), Скрипт успешно запущен.
If (ComParam1 = /Update){
Update(ComParam2, ComParam3)
}
Else If (ComParam1 = /TempDelete){
TempDelete(ComParam2, ComParam3)
}
Else{
CheckUpdate(Version)
}
Return
CheckUpdate(Version) {
NewVersionHTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
NewVersionHTTP.Open("GET", "https://github.com/sokolin05/profile.moh/raw/master/version.profile.md", true)
NewVersionHTTP.Send()
NewVersionHTTP.WaitForResponse()
NewVersion := NewVersionHTTP.ResponseText
If (NewVersion <= Version){
; MsgBox, 16, Обновление, Новых версий скрипта не найдено.
Gosub, NoUpdate
Return
}
Else{
MsgBox, % 4+64+256, Обновление, Найдена новая версия скрипта!`nОбновить с %Version% до %NewVersion%?
IfMsgBox, No
{
Gosub, NoUpdate
Return
}
IfMsgBox, Yes
{
URLDownloadToFile, https://github.com/sokolin05/profile.moh/raw/master/ahk.moh.exe, %A_Temp%\ahk.moh.exe
PID := DllCall("GetCurrentProcessId")
Run %A_Temp%\ahk.moh.exe, "/Update" "%PID%" "%A_ScriptFullPath%"
ExitApp
}
}
}
Update(PID, Path) {
Process, Close, %PID%
Process, WaitClose, %PID%, 3
If ErrorLevel
{
MsgBox, % 16, Обновление, Не удаётся закрыть процесс.
ExitApp
}
Else{
FileCopy, %A_ScriptFullPath%, %Path%, 1
If ErrorLevel
{
MsgBox, % 16, Обновление, Не удалось копирование, возможно были запущены несколько экземпляров программы.
ExitApp
}
Else{
PID := DllCall("GetCurrentProcessId")
Run %Path% "/TempDelete" "%PID%" "%A_ScriptFullPath%"
ExitApp
}
}
}
TempDelete(PID, Path) {
Process, Close, %PID%
Process, WaitClose, %PID%, 2
FileDelete, %Path%
}
В самом скрипте есть и файл, с которого берется версия и сам AHK.