PDA

View Full Version : آپدیت خودکار برنامه و مشکل در اکسترکت فایل



anoor_h
پنج شنبه 19 مهر 1397, 10:46 صبح
دوستان سلام من برای آپدیت خودکار برنامم یه فرمی در نظر گرفتم که بعد از کارهای چک کردن ورژن و دانلود فایل زیپ برای اکسترکت کردنش دو تا مشکل دارم
1-موقعی که میخوام از سرور مستقیم اکسترکت کنم خطا میده uri format not support
2-اگه اول دانلود کنم بعد بخوام اکسترکت کنم خود فولدر اکسترکت میشه من میخوام فایل هام تو مسیر اکسترکت بشه یه لطفی بکنین یه نگاهی بندازین


///////اینجا خطا میده که uri format not support
var startupPath = System.Windows.Forms.Application.StartupPath;
StreamReader reader = new StreamReader(WebRequest.Create(textBox1.Text).GetR esponse().GetResponseStream());
ZipFile zip = ZipFile.Read(textBox1.Text);
Directory.CreateDirectory(startupPath);
zip.ExtractAll(startupPath, ExtractExistingFileAction.OverwriteSilently);
MessageBox.Show("انجام شد");

Mahmoud.Afrad
دوشنبه 23 مهر 1397, 15:45 عصر
یک نمونه از فایل فشردده قرار بدید و بگید از چه کتابخانه ای برای اکسترکت استفاده میکنید.

anoor_h
چهارشنبه 25 مهر 1397, 14:05 عصر
در داخل پوشه debug یه فایل rar بنام update وجود داره من میخوام اون فایل فشرده که مثلا توش 10 تا فایل داره اولا مستقیم از سرور دانلود و اکسترکت بشه دوما فایلهای درونش بیاد تو پوشه debug ریخته بشه نه اینکه فولدره update درست کنه

از ionic.zip استفاده کردم

http://s8.picofile.com/file/8340158892/Download_Sample.rar.html

اگه توجه کنین توی لیست باکس میتونیم محتویات فایل فشرده رو ببینیم ولی چطوری فایلهاشو تو مسیر بریزیم نمیدونم

Mahmoud.Afrad
چهارشنبه 25 مهر 1397, 18:55 عصر
https://stackoverflow.com/a/25788473
https://stackoverflow.com/a/2324644

و یا
فایلها رو بطور مستقیم فشرده کنید و نه فولدر update را. در اینصورت مشکلی نیست.

anoor_h
پنج شنبه 26 مهر 1397, 09:35 صبح
ممنون اگر بخوایم فایلها رو زیپ کنیم بازم براش پوشه میسازه نمیدونم معادل extract here داره یا نه
ضمنا ار بخوایم دانلود و زیپ رو همزمان انجام بدیم این خطارو میده
149090

Mahmoud.Afrad
پنج شنبه 26 مهر 1397, 21:22 عصر
ممنون اگر بخوایم فایلها رو زیپ کنیم بازم براش پوشه میسازه نمیدونم معادل extract here داره یا نه
ضمنا ار بخوایم دانلود و زیپ رو همزمان انجام بدیم این خطارو میده
149090

همونطور که گفتم دو تا راه دارید.
یکی اینکه با کد در زمان اکسترکت مسیر را اصلاح کنید که دو تا لینک در موردش ارسال کردم.
راه دیگر اصلاح فایل فشرده هست. ابتدا فایلهای آپدیت را سلکت و روی یکی راست کلیک از منوی send to گزینه compressed را انتخاب کنید. با برنامه هایی نظیر وینزیپ و ... میشه. در اینصورت فولدری در کار نخواهد بود و با همون کد قبلی جواب میگیرید.


اون خطا هم به خاطر این هست که هنوز دانلود تمام نشده. عملیات اکسترکت باید بعد از دانلود کامل فایل انجام بشه(در رویداد DownloadFileCompleted)

anoor_h
یک شنبه 29 مهر 1397, 09:57 صبح
ممنون مهندس جان اون قسمتی که من نوشتم شروع اکسترکت چی بنویسم که وقتی کار کد بالا و دانلود انجام شد بعد قسمت بعدی اجرا بشه مثل یه جور مسیج باکس ولی دیده نشه

Mahmoud.Afrad
یک شنبه 29 مهر 1397, 17:48 عصر
ممنون مهندس جان اون قسمتی که من نوشتم شروع اکسترکت چی بنویسم که وقتی کار کد بالا و دانلود انجام شد بعد قسمت بعدی اجرا بشه مثل یه جور مسیج باکس ولی دیده نشه

کل عملیات اکسترکت را به رویداد webClient.DownloadFileCompleted منتقل کنید.

anoor_h
دوشنبه 30 مهر 1397, 13:30 عصر
آره خیلی عالی شد ممنون ازت

anoor_h
دوشنبه 30 مهر 1397, 14:04 عصر
مهندس یه چیز دیگه من تو برنامه اصلیم این کدو گذاشتم
String txt = sr1.ReadLine();

String ver = Application.ProductVersion;

if (txt != ver)
{
Process.Start("updater1.exe");
Application.Exit();
}
حالا وقتی برنامه آپدیت میشه چکار باید بکنم که دوباره فرم آپدیت نیاد به application.productversion اصلا کار نداشته باشم بیایم یه تکست تو مسیر برنامه بزارم توی تکست چطوری بنویسم که برابر با تکست توی سرور بشه این دو فرم با هم که نمیتون ارتباط داشته باشن؟؟!!

Mahmoud.Afrad
دوشنبه 30 مهر 1397, 18:34 عصر
مهندس یه چیز دیگه من تو برنامه اصلیم این کدو گذاشتم
String txt = sr1.ReadLine();

String ver = Application.ProductVersion;

if (txt != ver)
{
Process.Start("updater1.exe");
Application.Exit();
}
حالا وقتی برنامه آپدیت میشه چکار باید بکنم که دوباره فرم آپدیت نیاد به application.productversion اصلا کار نداشته باشم بیایم یه تکست تو مسیر برنامه بزارم توی تکست چطوری بنویسم که برابر با تکست توی سرور بشه این دو فرم با هم که نمیتون ارتباط داشته باشن؟؟!!

مگر productversion را در پروژه تغییر نمیدید؟ اگر productversion را در برنامه هم اصلاح کنید بعد از آپدیت شرط if صحیح نخواهد بود و مشکلی پیش نمیاد.