PDA

View Full Version : حرفه ای: حذف یک برنامه در حال اجرا



drsina
یک شنبه 09 تیر 1392, 19:19 عصر
سلام
یه بازی (البته -2 سال ) درست کردم !:لبخند: خیلی باحاله دادم به دختر داییم 2 سالش بود , یه ذره به صورتم خیره شد و با یه سکوت معنا دار اتاق رو وداع گفت ! :قهقهه: فکر کنم خیلی خوشش اومد . تا کامل تموم شد حتما اینجا می زارم سورسشو .
تقریبا آخراشه .


حالا این بازی یه log به فرمت txt برا ثبت اطلاعات بازی و رکورد ها تو My Document ذخیره می کنه ؛
حالا یه نرم افزار کنسول نوشتم که اگر بازی رو بخواند حذف کنند اون فایل ها هم حدف بشه !

مشکلی با حذف کردن نیس ولی وقتی این نرم افزار کنسول فایل های خود نرم افزار که تو programmfile هست رو حذف میکنه ، به خود فایل حذاااف ( در فارسی به معنای حذف کننده !) می رسه اروورر میده و خودشو نمی تونه حذف کنه ,

چه کار کنم که فایل حذاف هم حذف بشه ؟؟!!!؟:متفکر:

danialafshari
یک شنبه 09 تیر 1392, 22:15 عصر
درست متوجه نشدم
اگر حذف نمیشه حتما در حال اجراست و ابتدا پروسس برنامه ای را که بازش می کنه Kill یا Dispose کنید

drsina
یک شنبه 09 تیر 1392, 22:31 عصر
خب آره دیگه ! در حال اجراست ! خودشو نمیتونه بحذفه

آخه اگر خودش kill کنم که خودش می مونه و خود فایل حذف کننده حذف نمیشه !
چه کارش کنم ؟

danialafshari
یک شنبه 09 تیر 1392, 22:35 عصر
تو FormClosing بعد کد زیر فایل رو حذف کن ببین میشه یا نه؟
this.Dispose();
//Delete File

drsina
یک شنبه 09 تیر 1392, 23:09 عصر
دانیال فرم نیست .
تو کنسول نوشتم .

drsina
سه شنبه 11 تیر 1392, 15:02 عصر
سلام .
این تاپیک رو من چند روز پیش زدم کسی جواب درستی نداد !!:لبخند:

اینو تو stackoverflow گذاشتم و یه بنده خدای این جوابو بهم داد !
ازش استفاده کردم کاملا درست و بی نقص بود ....
راستش می خوام برم جایی وگرنه برای دوستان ترجمه می کردم و لی به هر حال امیدوارم به درد کسی بخوره .

You're trying to delete the folder in which your running application is in and therefore delete the program itself? Well, you have a few options. It is interesting to note as well that batch files can delete themselves. So, that also leaves you a few more options:

have your C# program copy itself to a temp directory before deleting the folder, and run from there.
use a batch file entirely instead of C# - having it do whatever and then delete itself afterwards.
have your C# program generate and execute a batch file and then quit - leaving the batch file to clean up after the C# program exits.
run a CLI command to delete your program after a specified time:
Process.Start("cmd.exe", "/C ping 1.1.1.1 -n 1 -w 3000 > Nul & Del " + Application.ExecutablePath);
you can use MovFileEx to specify to have your program deleted on next start up.
Most of these answers imply that the running EXE is your own appliation. if it is not, though - #5 will still work. you can schedule it to be deleted the next time the computer starts.