mrmarman hocam ilginiz için teşekkür ediyorum.
Programın kendi kendini silip yeni halini çalıştırmak için kendi uyguladığım yöntemi bildireyim
Bu yazdıklarınız ana projemden yaparak (ek küçük bir progaram yazmadan) direk kendi projemde
yazılımın ile aynı isimde ancak uzantıs BAK olan dosyanın indirilmesini sağladıktan sonra aşağıdaki işlemi yaptır.
ben Stoktakip.exe mi Stoktakip.BAK şeklinde bir kopyasını değiştirerek hosta gönderdim sonra bunu indirdim verdiğiniz ftp kodları ile indirmesini sağlayabiliyorum.
Kod: Tümünü seç
procedure TForm2.FormCreate(Sender: TObject);
begin
If FileExists(ExtractFilePath(Application.Exename) +'Stoktakip.BAT') then
DeleteFile(ExtractFilePath(Application.Exename) +'Stoktakip.BAT');
end;
yazdım
güncelle butonuma
Kod: Tümünü seç
procedure TForm2.Button11Click(Sender: TObject);
Var
FTPAdres,
KaynakDizin,
Name,
Pass,
KaynakDosya,
HedefDosya : String;
begin
FTPAdres := 'kubilayilkogretim.k12.tr';
KaynakDizin := '\programlar';
Name := 'kubilay';
Pass := 'kaby20687';
KaynakDosya := 'Stoktakip.BAK';
HedefDosya := ExtractFilePath(Application.Exename) +KaynakDosya;
If FileExists(HedefDosya) AND ( MessageDlg('Hedef Dosya Mevcut, üzerine yazılsın mı ? '+#13'('+HedefDosya+')', mtInformation, [mbYes, mbCancel], 0) = mrCancel )
then EXIT
else DeleteFile(HedefDosya);
If FTPDosyaAl( IdFtp, KaynakDosya, HedefDosya, FTPAdres, KaynakDizin, Name, Pass ) then
MessageDlg('Dosya Başarıyla Alındı'+#13'('+HedefDosya+')', mtInformation, [mbok], 0)
else MessageDlg('Dosya Alınamadı'+#13'('+KaynakDosya+')', mtError, [mbok], 0);
end;
indikten sonra
// Güncelleme işlemi yapacak BAT hazırlığı, programdan çıkış ve BAT çalıştırma.
Kod: Tümünü seç
MessageDlg('Dosya Başarıyla Alındı'+#13'('+HedefDosya+')', mtInformation, [mbok],
Bat := TStringList.Create ;
Bat.Add('@Echo Off' );
Bat.Add( Format('Copy %s %s', [ChangeFileExt(Application.ExeName,'.BAT'), Application.ExeName]) );
Bat.Add('DEL '+ChangeFileExt(Application.ExeName,'.BAK'));
Bat.Add( Application.ExeName );
Bat.SaveToFile( ExtractFilePath(Application.Exename)+'Stoktakip.BAT' );
Bat.Free;
Application.Terminate;
WinExec( PChar( ExtractFilePath(Application.Exename)+'Stoktakip.BAT'), SW_Hide );
ekeldikten sonra
bu satırla ilgili hata alıyorum
Kod: Tümünü seç
Undeclared identifier:'Bat'
Missing operator or semicolon
yardılarınızı umuyorum.