Дано: есть прога, которая чтобы обновиться запускает bat файл, которые удаляет исходный ехе-шник, переименовывает полученный, и запускает переименованный.
запускаю bat файл следующим образом:
iWay:= ExtractFileDir(Application.ExeName); // получаю путь к ехе-шнику
ShellExecute(0,nil,PChar(iWay+'\Update.bat'),nil,nil,SW_HIDE); // запускаю bat-файл
Application.Terminate; // глушу прогу
сам Update.bat выглядит так:
@echo off
:del_loop
del С:\1.exe // крутимся в цикле пока не грохнем файл 1.exe
if exist С:\1.exe goto del_loop
:go
rename С:\_1.exe 1.exe
if not %errorlevel% == 0 goto go // если не удалось переименовать (вернулась ошибка) - пытаемся снова
start С:\1.exe // запускаем полученный файл
del Update.bat // самоубийство
Проблема: под ХР все работает как часы, под Vista ни в какую не хочет запускаться.
Беда...