
نوشته شده توسط
khoshblagh
با سلام
من نسخه جدید برنامه را در دیتا بیس برنامه ثبت میکنم. سپس برنامه با مقایسه تاریخ ورزن قبلی برنامه با ورژن جدید درخواست نصب برنامه جدید را از کاربر مینماید. کاربر هم با فشردن دکمه نصب کد پیوست اجرا شده و از برنامه خارج میشود. و دوباره ویرایش نصب شده جدید را اجرا مینماید. تا اینجا مشکلی نیست. ولی بعضا کاربران نسخه قدیم برنامه که حالا با کد زیر نامش به OLD.exe را اجرا مینمایند. تصمیم گرفتم به جای تغییر نام کلا فایل اجرایی را حذف و نسخه جدید را نصب نمایم. اما با توجه در حال اجرا بودن برنامه قادر به حذف نمیباشم. پیشنهاد شما برای این معضل چیست؟ متشکرم
Dir:=ExtractFilePath(Application.ExeName);
if FileExists(Dir+'.\old.exe') then DeleteFile(Dir+'.\old.exe') ;
MoveFile(PChar(Dir+'.\Refah.exe'), PChar(Dir+'.\old.exe'));
qryVerson.Open;
qryVersonNewVersion.SaveToFile(Dir+'.\Refah.exe');
سلام
میتونید در زمان اجرای برنامه چک کنید اگر فایلی با نام Old.EXE در کنار برنامه وجود داره، پاکش کنه.
برای فرآیند آپدیت هم بدین صورت عمل کنید که:
1- فایل اجرایی برنامه رو تغییر نام بدید مثلا از App.exe به Old.Exe
2-نسخه جدید رو دانلود کرده و در کنار فایل اجرایی تغییر نام داده شده بزارید.(با نام App.exe)
3- دستور Application.Terminate رو صادر کنید
4-بعد از دستور بالا، دستور اجرای برنامه رو بدید
WinExec(PAnsiChar(AnsiString(ParamStr(0))), SW_SHOW);
علی رغم اینکه دستور Terminate داده شده، برنامه خط بعدی رو هم اجرا خواهد کرد، لذا بعد از بسته شدن برنامه، مجددا برنامه اجرا میشود و چون بالاتر دستور حذف Old.EXE رو به شروع برنامه اضافه کردیم، لذا دیگه فایل اجرایی قدیمی وجود نخواهد داشت.
موفق باشیم