PDA

View Full Version : مشکل در پاک شدن عکس های داخل پوشه ی برنامه در هر بار نصب برنامه



setareh2013
دوشنبه 26 خرداد 1393, 09:42 صبح
سلام
من یک برنامه نوشتم که در این برنامه عکس کاربران ذخیره میشه داخل پوشه ای به نام images
عکس ها داخل مسیر basePath = System.IO.
Directory.GetCurrentDirectory() + \\images;
که داخل debug قرار داره ذخیره میشه .
مشکلی هم در ذخیره وجود نداره .
مشکل اینه که این برنامه چند وقت یک بار باید آپدیت بشه و من نسخه ی جدید رو به مشتری بدهم . و هر بار که نسخه ی جدید رو نصب می کنم پوشه ی images من خالیه ولی از مشتری پر عکسه
و با نصب ورژن جدید عکس های مشتری پاک میشه .
باید چه کار کنم که با هر بار نصب عکس های روی کامپیوتر مشتری پاک نشه و فقط برنامه ی اصلی آپدیت بشه .
با تشکر

shahryari
دوشنبه 26 خرداد 1393, 09:46 صبح
ای بابا .. عجب کاری میکنید شما ...
این چه کاریه کل برنامه رو مجددا نصب میکنی؟
فقط فایل اجرایی رو آپدیت کن دیگه...

Davidd
دوشنبه 26 خرداد 1393, 10:16 صبح
اگه برنامه ديتابيس داره كه احتمالا داره، با توجه به اينكه عكس حجم زيادي نداره بهتره در ديتابيس ذخيره بشه نه در پوشه ( براي فايل هاي كمتر از يك مگابايت ذخيره در ديتابيس بهتره). با اينكار كاربر ميتونه از ديتابيس بكاپ بگيره و مشكل پاك شدن تصاوير هم برطرف ميشه.
البته راه حل آپديت فايل اجرايي هم كه گفتن خوبه (اگه تغييرات اساسي باشه اين راه حل ممكنه جواب نده)
در ضمن دستور Directory.GetCurrentDirectory() پوشه جاري برميگردونه نه لزوما پوشه برنامه. به عنوان مثال اگه كاربر با OpenFileDialog بخواد تصويري از Desktop انتخاب كنه، اين دستور پوشه Desktop برميگردونه.

matin.soft
دوشنبه 26 خرداد 1393, 10:25 صبح
هنگام ایجاد بسته ی نصبی تنظیماتی وجود دارد که پوشه بعد از آنیستال کردن پاک نشود ، شما این تتنظیمات را اعمال فرمایید . موفق باشید

setareh2013
دوشنبه 26 خرداد 1393, 14:48 عصر
ممنون از شما
چه طوری می تونم فقط فایل اجرایی رو آپدیت کنم و پوشه بدون تغییر بمونه و پاک نشه . ممنون میشم اگر راه حلش رو بگید

aliagamon
دوشنبه 26 خرداد 1393, 15:28 عصر
اول اینکه شما اصلا نباید اون فولدر رو تو setup بزارین با فایل اجرایی اصلی برنامه در لحظه ی اول باید چک کنید اگه این فولدر وجود داشت که هیچی وگرنه بیاد همچین فولدری رو بسازه ... روش اصولیش اینه ... اینطوری تا زمانی که این فولدر وجود داره مشکلی نیست اگر هم طرف اولین بار باشه نرم افزارو نصب میکنه این فولدر ایجاد میشه .... :لبخند:

shahryari
دوشنبه 26 خرداد 1393, 15:48 عصر
ممنون از شما
چه طوری می تونم فقط فایل اجرایی رو آپدیت کنم و پوشه بدون تغییر بمونه و پاک نشه . ممنون میشم اگر راه حلش رو بگید

راه حلهای زیادی مطرح شده خود منم یه زمانی یه کامپوننت (http://barnamenevis.org/showthread.php?412932-%D8%A7%D9%81%D8%B2%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%88%D8%B2%D8%B1%D8%B3%D8%A7%D9%86%D B%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A8%D8%A7-%DB%8C%DA%A9-%DA%A9%D9%84%DB%8C%DA%A9-%28%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%DA%A9%D9%86%DB%8C%D8%AF%29&highlight=%D8%A7%D9%BE%D8%AF%DB%8C%D8%AA) برای این مورد نوشتم

setareh2013
سه شنبه 27 خرداد 1393, 12:15 عصر
اول اینکه شما اصلا نباید اون فولدر رو تو setup بزارین با فایل اجرایی اصلی برنامه در لحظه ی اول باید چک کنید اگه این فولدر وجود داشت که هیچی وگرنه بیاد همچین فولدری رو بسازه ... روش اصولیش اینه ... اینطوری تا زمانی که این فولدر وجود داره مشکلی نیست اگر هم طرف اولین بار باشه نرم افزارو نصب میکنه این فولدر ایجاد میشه .... :لبخند:
لطفا راه حلتون رو یه کم باز تر کنید . من با خود ویژوال استادیو ستاپ می گیرم . داخل کدهای برنامه می تونم چک کنم که یک پوشه وجود داره یا نه ولی داخل فایل نصب نمیدونم چه طوری اینکارو انجام بدم

setareh2013
سه شنبه 27 خرداد 1393, 12:16 عصر
این کامپوننت برای وب اپلیکیشن هستش فکر می کنم
برنامه ی من ویندوز اپلیکیشنه

drsina
چهارشنبه 28 خرداد 1393, 09:35 صبح
ماشالا هرکی میاد میگه کاری که یکی پیشنهاد داده اشتباست ....... بابا چه کاریه حالا اینقدر سختش می کنید .
شما میخوای فایل اجرایی خودتو به صورت Exe برای آپدیت به مشتتری بدی یا دانلود و جایگزین کنی ؟!
به نظر من یه برنامه جدا به نام آپدیتر برای برنامه ی اصلیت بنویس ، حالا اگر می خوای exe به مشتری بده ، با اون آپدیتر فایل exe ای باید جایگزین بشه رو حذف و فایل جدید رو جایگزین کن .

اگر میخوای از اینترنت دانلود کنی : بازم همون برنامه آپدیتر رو بنویس و از این کد استفاده کن :
private void btnDownload_Click(object sender, EventArgs e){
WebClient webClient = new WebClient();
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChange d);
webClient.DownloadFileAsync(new Uri("http://mysite.com/myfile.txt"), @"c:\myfile.txt");
}


private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar.Value = e.ProgressPercentage;
}


private void Completed(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show("Download completed!");
}





حالا بعد از اینکه رویداد completed به پایان رسید ، فایل قدیمی رو پاک کن و فایل جدید رو اونجا کپی کن .

setareh2013
چهارشنبه 28 خرداد 1393, 21:00 عصر
دانلود برای چی ؟
من یک برنامه ویندوز اپلیکیشن نوشتم . یه برنامه ثبت نام که عکس اعضا هم باید ذخیره بشه .
حالا من می خوام وقتی این برنامه رو خواستم ورژن جدیدشو براشون نصب کنم این پوشه ی عکس روی کامپیوتر اونها بدون تغییر بمونه .

setareh2013
جمعه 30 خرداد 1393, 21:37 عصر
لطفا یک راهنمایی بکنید که به درد کار من بخوره . این همه جواب هیچ کدوم مربوط به ویندوز اپلیکیشن نیستند

drsina
جمعه 30 خرداد 1393, 22:07 عصر
الان شما باید فایل exe اصلی رو جایگزین کنید دیگه ؟ درسته ؟!

خب فقط فایل exe اصلی رو حذف و فایل جدید رو کپی کنید ... هیچ مشکلی هم برای عکس ها پیش نمیاد .

الان مشکل دیگه چیه ؟!

setareh2013
جمعه 30 خرداد 1393, 22:13 عصر
ای خدا !!
خب مشکل من اینه که این پوشه هم جایگزین میشه و عکس های قبلی حذف میشه .

Mahmoud.Afrad
جمعه 30 خرداد 1393, 22:14 عصر
جواب داده شد.
پاسخ aliagamon (http://barnamenevis.org/member.php?214213-aliagamon) رو من هم تایید میکنم. توی برنامه چک کن اگر فولدر وجود داشت که هیچ اگر نبود فولدر رو بساز. در اینصورت هنگام ساخت ستاپ، فولدر Images رو به ستاپ اضافه نکن.

setareh2013
جمعه 30 خرداد 1393, 22:23 عصر
وقتی ورژن جدید برنامه نصب میشه ، ورژن قبلی کاملا پاک میشه . پوشه ها ی اون هم پاک میشه . اگر ورژن قبلی رو پاک نکنم پیام میده که نمیتونه جدیده رو نصب کنه . پس دیگه فولدری وجود نداره که من چک کنم

setareh2013
جمعه 30 خرداد 1393, 22:31 عصر
خب من پوشه ها رو از داخل دیباگ برمی دارم داخل یک درایو دیگه میگذارم که هنگام پاک کردن یک ورژن پوشه ها پاک نشن .
میشه بگید چه طوری باید چک کنم که این پوشه وجود داره یا نه