PDA

View Full Version : سوال: Update نرم افزار



mandegaran
یک شنبه 24 آبان 1388, 21:35 عصر
با سلام خدمت دوستان واساتید محترم
می خواهم با هر بار وصل شدن به اینترنت نرم افزاری که نوشته ام به سایتی مراجعه کرده در صورت موجود بودن ورژن جدید نرم افزار خود را Update نمایید
برای مسائل زیر چه روش های را پیشنهاد می کنید
1-وصل شدن به سایت و مراجعه به آدرس مورد نظر
2-تشخیص ورژن جدید فایل های مختلف
3-دانلود کردن فایل از سایت
4-تعویض یا Upgrade کردن فایل های نرم افزار بر روی Pc با توجه به اینکه نرم افزار در حال اجراست

sunn789
یک شنبه 24 آبان 1388, 22:17 عصر
کافیه فقطنرم افزارت رو Publish کنی و هر بار یکادرس معتبر اینترنتی برای Publish داشته باشی تا هر زمان کاربر نرمافزار رو ااجرا کرد بتونه از سایت ورژن جدید رو دانلود کنه

AliRezaPro
یک شنبه 24 آبان 1388, 23:54 عصر
برای اینکه برنامه شما خودشو به روز رسانی کنه چند روش وجود داره
این روشی که من میگم یک توانایی بسیار جالبی هست که وقتی آخرین نسخه ی برنامه ات منتشر شد برنامه متوجه ی این قضیه بشه و با دادن پیغام به کاربر سعی در آپدیت کردن خودش بکنه
این جزء اختیارات داخلی پلتفرم دات نت هست که شما میتونید ازش استفاده کنید
خوب ، از کجا باید شروع کرد؟برای شروع من تصمیم گرفتم که پروسه ی آپدیت رو از راه های زیر انجام بدم ...
-چک کردن متن حاوی اطلاعات نسخه ی جدید که در وب سایتم هست.
-خواندن اطلاعات نسخه از یک فایل متنی و مقایسه ی آن با نسخه ی برنامه.
-اگر نسخه در فایل متنی همان بود که هیچ
-اگر ورژن در فایل متنی بزرگتر بود از کاربر بپرسد که میخواهید برنامه ی خود را به روز رسانی کنید؟
-به روز رسانی !
بخش اول ابتدای به روز رسانی و جدید کردن برنامه هست.
برای اولین چیز شما نیاز دارید در برنامه ی اصلی فضای نام System.Net را در بالای پروژه اضافه کنید.

Using System.Net;

اولین چیز حل مشکلات IP Address است!



try

{

string RemoteDomain = "http://barnamenevis.org";

IPHostEntry inetServer = Dns.GetHostEntry(RemoteDomain.Replace("http://", String.Empty));

}

catch (Exception ex)

{

...

}

اگر به یک استثنا ء برخورد کرد بلاک Catch بطور کامل اجرا میشود !
این هم یک مثال ساده برای نشان دادن خطا با دکمه ی Ok هست.


catch

{

DialogResult result = MessageBox.Show(String.Format("Unable to connect to {0}.\nPlease check your internet connection and try again.", RemoteDomain), "Error during version check", MessageBoxButtons.OK, MessageBoxIcon.Error);

}
اگر همه چی خوب پیش رفت برنامه سعی در دانلود کردن نسخه ی ی آپدیت در مسیر جاری Temp Directory میکنه (با اجرای try زید)


try

{

string versionFileUrl = "http://barnamenevis.org/countdown/countdown.version.txt";

System.Net.WebClient client = new System.Net.WebClient();

client.DownloadFile(versionFileUrl, System.Environment.ExpandEnvironmentVariables("%TEMP%"));

}

catch (Exception ex)

{

...

}


فایل متنی بطور مثال حاوی این رشته است 2.0.0.1
برای ست کردن نسخه ی برنامه شما نیاز دارید تا فایل AssemblyInfo.csرا باز کنید !(در Properties)
اگر به مشکل برخورد بلاک catch اجرا میشود !


catch (Exception ex)

{

string errorDetails = String.Empty;

MessageBoxIcon iconsToShow = MessageBoxIcon.Information;

if (ex.Message.Contains("could not be resolved"))

{

errorDetails = String.Format("Error looking up {0}.\nPlease check your internet connection and try again.", RemoteDomain);

iconsToShow = MessageBoxIcon.Error;

}

else if (ex.Message.Contains("404"))

{

errorDetails = "Upgrades to Countdown are currently unavailable.\nPlease try again later.";

iconsToShow = MessageBoxIcon.Information;

}

DialogResult result = MessageBox.Show(String.Format("{0}", errorDetails), "Error downloading file", MessageBoxButtons.OK, iconsToShow);

return;

}


فایل جاری در مسیر Temp دانلود میشود (با تعریف Environment ) و سپس خواندن اطلاعات نسخه .بخش اول کد مثل این هست.


if (File.Exists(config.VersionFileLocal))

{

string versionFileLocal = String.Format("{0}\\{1}", System.Environment.ExpandEnvironmentVariables("%TEMP%"), "countdown.version.txt");

TextReader tr = new StreamReader(versionFileLocal);

string tempStr = tr.ReadLine();

tr.Close();

File.Delete(versionFileLocal);

string longVersionFromFile = tempStr;

string shortVersionFromFile = tempStr.Replace(".", String.Empty);

Version vrs = System.Reflection.Assembly.GetExecutingAssembly(). GetName().Version;

string longVersionFromVrs = String.Format("{0}.{1}.{2}.{3}", vrs.Major, vrs.Minor, vrs.MajorRevision, vrs.MinorRevision);

string shortVersionFromVrs = String.Format("{0}{1}{2}{3}", vrs.Major, vrs.Minor, vrs.MajorRevision, vrs.MinorRevision);

...

}

else

{

DialogResult result = MessageBox.Show(String.Format("Version file not found or not accessible.\nPlease check that you have permission to read the {0} folder", versionFolderLocal), "Version information missing", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

}


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

==دستم خسته شده بقیه فردا

M.YasPro
دوشنبه 25 آبان 1388, 07:08 صبح
سلام
خود vs این قابلیت رو داره .
در مورد clickonce یه سرچی بزن خیلی چیز جالبیه . همه این چیزاییرو که گفتی هم داره

AliRezaPro
دوشنبه 25 آبان 1388, 10:41 صبح
دقیقا
خوب بقیشم سرچ کنید حتما دستتون میاد
موفق باشید

mandegaran
دوشنبه 25 آبان 1388, 16:23 عصر
از پاسخ دوستان متشکرم
لطفا اگر از ClickOnce استفاده کردین روش استفاده و مراحل تنظیماتش رو توضیح بدین.

programer1389
پنج شنبه 27 خرداد 1389, 07:38 صبح
چون اینجا در موردClickOnceچیزی مطرح نشد و گفتم بقیه کسانی که مثل من اینجا میان دست خالی از این پست بر نگردن این لینک رو بزارم
http://msdn.microsoft.com/en-us/library/ms228283(VS.80).aspx

mehdi0020
یک شنبه 09 آبان 1395, 14:45 عصر
سلام من هم همچین مشکلی دارم فقط اینکه دسترسی به اینترنت ندارم و برنامم که به زیان #C هستش تو شبکه محلی کار میکنه
راه حلم برای آپدیت چیه؟
فقزط یه فضا شیر دارم