آپدیت خودکار برنامه و مشکل در اکسترکت فایل
دوستان سلام من برای آپدیت خودکار برنامم یه فرمی در نظر گرفتم که بعد از کارهای چک کردن ورژن و دانلود فایل زیپ برای اکسترکت کردنش دو تا مشکل دارم
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("انجام شد");
نقل قول: آپدیت خودکار برنامه و مشکل در اکسترکت فایل
یک نمونه از فایل فشردده قرار بدید و بگید از چه کتابخانه ای برای اکسترکت استفاده میکنید.
نقل قول: آپدیت خودکار برنامه و مشکل در اکسترکت فایل
در داخل پوشه debug یه فایل rar بنام update وجود داره من میخوام اون فایل فشرده که مثلا توش 10 تا فایل داره اولا مستقیم از سرور دانلود و اکسترکت بشه دوما فایلهای درونش بیاد تو پوشه debug ریخته بشه نه اینکه فولدره update درست کنه
از ionic.zip استفاده کردم
http://s8.picofile.com/file/83401588...ample.rar.html
اگه توجه کنین توی لیست باکس میتونیم محتویات فایل فشرده رو ببینیم ولی چطوری فایلهاشو تو مسیر بریزیم نمیدونم
نقل قول: آپدیت خودکار برنامه و مشکل در اکسترکت فایل
https://stackoverflow.com/a/25788473
https://stackoverflow.com/a/2324644
و یا
فایلها رو بطور مستقیم فشرده کنید و نه فولدر update را. در اینصورت مشکلی نیست.
1 ضمیمه
نقل قول: آپدیت خودکار برنامه و مشکل در اکسترکت فایل
ممنون اگر بخوایم فایلها رو زیپ کنیم بازم براش پوشه میسازه نمیدونم معادل extract here داره یا نه
ضمنا ار بخوایم دانلود و زیپ رو همزمان انجام بدیم این خطارو میده
ضمیمه 149090
نقل قول: آپدیت خودکار برنامه و مشکل در اکسترکت فایل
نقل قول:
نوشته شده توسط
anoor_h
ممنون اگر بخوایم فایلها رو زیپ کنیم بازم براش پوشه میسازه نمیدونم معادل extract here داره یا نه
ضمنا ار بخوایم دانلود و زیپ رو همزمان انجام بدیم این خطارو میده
ضمیمه 149090
همونطور که گفتم دو تا راه دارید.
یکی اینکه با کد در زمان اکسترکت مسیر را اصلاح کنید که دو تا لینک در موردش ارسال کردم.
راه دیگر اصلاح فایل فشرده هست. ابتدا فایلهای آپدیت را سلکت و روی یکی راست کلیک از منوی send to گزینه compressed را انتخاب کنید. با برنامه هایی نظیر وینزیپ و ... میشه. در اینصورت فولدری در کار نخواهد بود و با همون کد قبلی جواب میگیرید.
اون خطا هم به خاطر این هست که هنوز دانلود تمام نشده. عملیات اکسترکت باید بعد از دانلود کامل فایل انجام بشه(در رویداد DownloadFileCompleted)
نقل قول: آپدیت خودکار برنامه و مشکل در اکسترکت فایل
ممنون مهندس جان اون قسمتی که من نوشتم شروع اکسترکت چی بنویسم که وقتی کار کد بالا و دانلود انجام شد بعد قسمت بعدی اجرا بشه مثل یه جور مسیج باکس ولی دیده نشه
نقل قول: آپدیت خودکار برنامه و مشکل در اکسترکت فایل
نقل قول:
نوشته شده توسط
anoor_h
ممنون مهندس جان اون قسمتی که من نوشتم شروع اکسترکت چی بنویسم که وقتی کار کد بالا و دانلود انجام شد بعد قسمت بعدی اجرا بشه مثل یه جور مسیج باکس ولی دیده نشه
کل عملیات اکسترکت را به رویداد webClient.DownloadFileCompleted منتقل کنید.
نقل قول: آپدیت خودکار برنامه و مشکل در اکسترکت فایل
آره خیلی عالی شد ممنون ازت
نقل قول: آپدیت خودکار برنامه و مشکل در اکسترکت فایل
مهندس یه چیز دیگه من تو برنامه اصلیم این کدو گذاشتم
String txt = sr1.ReadLine();
String ver = Application.ProductVersion;
if (txt != ver)
{
Process.Start("updater1.exe");
Application.Exit();
}
حالا وقتی برنامه آپدیت میشه چکار باید بکنم که دوباره فرم آپدیت نیاد به application.productversion اصلا کار نداشته باشم بیایم یه تکست تو مسیر برنامه بزارم توی تکست چطوری بنویسم که برابر با تکست توی سرور بشه این دو فرم با هم که نمیتون ارتباط داشته باشن؟؟!!
نقل قول: آپدیت خودکار برنامه و مشکل در اکسترکت فایل
نقل قول:
نوشته شده توسط
anoor_h
مهندس یه چیز دیگه من تو برنامه اصلیم این کدو گذاشتم
String txt = sr1.ReadLine();
String ver = Application.ProductVersion;
if (txt != ver)
{
Process.Start("updater1.exe");
Application.Exit();
}
حالا وقتی برنامه آپدیت میشه چکار باید بکنم که دوباره فرم آپدیت نیاد به application.productversion اصلا کار نداشته باشم بیایم یه تکست تو مسیر برنامه بزارم توی تکست چطوری بنویسم که برابر با تکست توی سرور بشه این دو فرم با هم که نمیتون ارتباط داشته باشن؟؟!!
مگر productversion را در پروژه تغییر نمیدید؟ اگر productversion را در برنامه هم اصلاح کنید بعد از آپدیت شرط if صحیح نخواهد بود و مشکلی پیش نمیاد.