Witam. Tworzę możliwość aktualizacji do mojego programu, i wszystko by działało gdyby nie jedna rzecz. Otóż po pobraniu nowej wersji programu do folderu tymczasowego, program powinien uruchomić plik bat, który usunie starą wersję i przekopiuje nową wersję programu. Program jest napisany w Delphi a skrypt bat uruchamiam tak:
ShellExecute(Handle, 'open',pchar(ExtractFilePath(Application.ExeName) + '\skrypt.bat'), nil, nil, SW_HIDE);
zawartość pliku bat:
@echo off
taskkill /f /im program.exe /t
del program.exe
move temp\program.exe program.exe
rmdir temp
START program.exe
exit
Wszystko działa dobrze jeżeli uruchomię program.exe bez instrukcji ShellExecute, a skrypt uruchomię ręcznie. Jeżeli natomiast program.exe uruchomi skrypt to ten zdoła tylko wykonać polecenie taskkill następnie się zamyka.
Macie jakiś pomysł dlaczego tak się dzieje? Bo ja już nie mam. Ostatnio w cmd siedziałem rok temu i moja wiedza trochę się uszczupliła. Bardzo proszę o pomoc.