Witam. Tworzę program, który można aktualizować przez internet. Problem w tym, że stary plik pod Vistą daje się skasować bez problemu, a pod XP już nie.
Po ściągnięciu pliku AE2.new dałem coś takiego:
If Application.MessageBox('Zakończono pobieranie!'+#13#10+
'Po kliknięciu "OK" program się wyłączy i zaktualizuje.','Koniec',MB_OK+MB_ICONInformation)=IDOK then
Begin
Application.Terminate;
ShellExecute(handle, 'open', 'update.exe', nil, nil, sw_normal);
End;
Następnie uruchamia się program update.exe, który wykonuje coś takiego:
procedure TForm1.FormActivate(Sender: TObject);
begin
StatusBar1.Panels[0].Text:='Czekaj...';
Application.ProcessMessages;
if not FileExists(ExtractFilePath(Application.ExeName)+'AE2.new') then
Begin
Application.ProcessMessages;
StatusBar1.Panels[0].Text:='Plik AE2.new NIE ISTNIEJE! Aktualizacja nie możliwa.';
Application.ProcessMessages;
Sleep(2000);
Application.Terminate;
End;
if FileExists(ExtractFilePath(Application.ExeName)+'AE2.new') then
Begin
StatusBar1.Panels[0].Text:='Trwa aktualizacja...';
Application.ProcessMessages;
DeleteFile('AE2.exe');
Sleep(2000);
MoveFile('AE2.new','AE2.exe');
Application.ProcessMessages;
StatusBar1.Panels[0].Text:='Zakończono pomyślnie!';
DeleteFile('AE2.new');
Sleep(1000);
Application.Terminate;
ShellExecute(handle, 'open', PChar(ExtractFilePath(Application.ExeName)+'AE2.exe'), nil, nil, sw_normal);
End;
end;
Pod XP plik AE2.exe nie kasuje się i nie aktualizuje, jednak AE2.new zostaje już skasowany.
Dlaczego pod Vistą to działa, a pod XP nie? Czy jest na to jakaś rada?
Zauważyłem jeszcze, że pod XP gdy uruchomię program update.exe własnoręcznie to wszystko jest OK.
Pozdrawiam.