سلام
من برای همه برنامه هایی که میسازم ، این امکان رو در برنام هام میذارم که کاربر بتونه برنامه اش را بروزرسانی بکنه
امروز یک کامپوننت برای این منظور طراحی کردم ، که از کدهای تکراری در برنامه هام کاسته بشه
ابتدا تمامی فایلها و فایل اجرایی نسخه جدید را فشرده کرده (حتما با فرمت zip باشه ، یک وقت rar نکنید و بعد فرمتشو دستی تغییر بدید
، پشتیبانی نمیشه
) و در هاست آپلود کنید
سپس در یک فایل متنی ورژن نسخه جدید برنامه را در خط اول مینویسید مثلا 1.0.1.2 این باید دقیقا مطابق ورژن خود برنامه تون باشه
پعد بدون خط فاصله کارکتر علامت شارپ # را وارد میکنید و باز بدون خط فاصله آدرس فایل Update.zip را که در هاست آپلود کرده اید ، را بنویسید
مثال :
1.0.1.2#http://test.com/myapp/update.zip
با توجه به شکل زیر

ver1235.jpg
سپس این فایل متنی را در یک هاست آپلود میکنید (مثلا پرشین گیگ) و مسیر این فایل را کپی کنید
بالفرض مثال :
http://araz-soft.persiangig.com/new_version.txt
سپس این کامپوننت را که در اصل یک فایل اجرایی exe است را دانلود کنید و به عنوان یک ریفرنس به برنامه تون اضافه کنید (add refrence)
سپس فضای نام ArazUpdater را یوزینگ کنید
using ArazUpdater;
یک باتن به فرمتان اضافه کنید و این کد ها را بنویسید
String txt = "http://araz-soft.persiangig.com/new_version.txt";
String ver = Application.ProductVersion;
Update up = new Update();
if (up.StartUpdate(txt,ver) == true)
{
Application.Exit ();
}
با کلیک روی دکمه مربوطه ، فرم زیر ظاهر میشود که میتوانید از آن استفاده کنید
اول اتصال اینترنت را چک میکند
بعد ورژن برنامه را با فایل متنی (در هاست) مطابقت میدهد
بعد برنامه فایل فشرده حاوی فایل اجرایی و سایر فایلهای جدید را از اینترنت میگیرد ، اکسترکت میکنه و به جای فایلهای قدیمی کپی میکند
upd133.jpg
.......................
کامپوننت را از لینک های زیر دریافت کنید (حجم 841 کیلوبایت)
نکته:
این فایل به تنهایی اجرا نمیشه حتما باید بعنوان ریفرنس به برنامه تون اضافه کنید
لینک های فایل جرایی و فایل متنی در این مثال ، فرضی هستند (بعدا نگید تست کردیم نشد)
لطفا تست کنید اگر ایرادی داشت بگید برطرف کنم
این کامپوننت هنوز تکمیل نشده و هر بار (با راهنمایی های شما دوستان) یک امکان جدید به برنامه اضافه خواهم کرد و شما هربار میتونید نسخه بروز شده اش را از دوتا لینک بالا تهیه کنید
کامپوننت تکمیل تر شد
برای اینکه راحتر بتونید اون فایل متنی را در ابتدای پست اشاره شد ، را تولید کنید و درصد خطاش کمتر باشه ، یا حتی مستقیم در هاست اف تی پی تون آپش کنید، امکانی به برنامه اضافه کردم که میتونید با نوشتن چند خط کد زیر در باتون ، فرم زیر را از کامپوننت فراخوانی بکنید و بقیه کارها رو خود برنامه انجام میده

این هم کدهای مربوط به احضار این فرم دوست داشتنی
String ver = Application.ProductVersion;
Update up = new Update();
up.CreateTextFile(ver);
تکمیل تر شد (2)
555.jpg
بنا به درخواست دوستان:
امکان بروزرسانی از روی دیسک (هارد یا فلش یا سی دی) فراهم شد
بجای تابع ShowUpdaterDialog از تابع جدید StartUpdate استفاده کنید مانند نمونه در بالا
موفق باشید
تکمیل تر شد (3) نسخه 2013.92.2.6
چند تابع جدید به برنامه اضافه شد که مختصرا توضیح میدم
برای استفاده در کل فرم یک نمونه جدید از Update در قسمت عمومی بالا فرم ایجاد کنید مثال : Update up = new Update();
تابع: UpdateFromServer از اینترنت آپدیت میکند و فرم اول در این پست را ظاهر میکند
پارامتر سوم اختیاری است و در صورت مقدار دادن ، بعد ازاتمام آپدیت ، برنامه شما را اجرا میکند
String txt = "http://araz-soft.persiangig.com/Test/NewVersion.txt";
String ver = Application.ProductVersion;
if (up.UpdateFromServer(txt, ver, Application.ExecutablePath) == true)
{
Application.Exit ();
}
-------------------------------------------------------------------------------------
تابع : UpdateFromDisk از فایل دانلود شده روی دیسک بروز رسانی میکند و یک اوپن فایل دیالوگ ظاهر میشود و مسیر فایل ریپ آپدیت را از کاربر میگیرد
پارامتر این تابع اختیاری است و در صورت مقدار دادن ، بعد ازاتمام آپدیت ، برنامه شما را اجرا میکند
if (up.UpdateFromDisk(Application.ExecutablePath) == true)
{
Application.Exit();
}
-------------------------------------------------------------------------------------
تابع : StartUpdate به کاربر امکان انتخاب در دوحالت را میدهد و فرم شماره 5 را نشان میدهد
پارامتر سوم اختیاری است و در صورت مقدار دادن ، بعد ازاتمام آپدیت ، برنامه شما را اجرا میکند
String txt = "http://araz-soft.persiangig.com/new_version.txt";
String ver = Application.ProductVersion;
if (up.StartUpdate(txt, ver, Application.ExecutablePath) == true)
{
Application.Exit();
}
-------------------------------------------------------------------------------------
تابع : CheckNewVersion وجود ورژن جدید را بررسی و در قالب یک متن با کاربر نشان میدهد
پروپرتی : NewVersionAvailable بعد از فراخوانی تابع فوق مقدار دهی میشود ( مقدار 1 فایل جدید و جود دارد مقدار 0 وجود ندارد)
به همراه پخش صدای متناسب و کنترل اتصال اینترنت
label1.Text = "لطفا صبر کنید....";
Refresh();
String txt = "http://araz-soft.persiangig.com/new_version.txt";
String ver = Application.ProductVersion;
label1.Text = up.CheckNewVersion(txt, ver );
this.Text = up.NewVersionAvailable.ToString() ;
-------------------------------------------------------------------------------------
راهنمای فارسی هنگام کد نویسی به برنامه اضافه شده است
Unt22led.jpg
اجرای آپدیت از روی دیسک
445232.jpg
موفق باشید
تکمیل تر شد (4) نسخه 2013.92.2.7
برای سهولت کار امکان فشرده کردن فایلهای مورد نیاز و اکسترکت کردن آن فراهم شد
در نسخه جدید این کامپوننت یک کلاس جدید بنام compress به برنامه اضافه شد که دارای دوتا تابع زیر است
1- تابع ZipAllFilesInDirectory این تابع محتویات داخل یک پوشه را (نه خود پوشه) فشرده میکند که دارای 3 تا پارامتر است پارامتر اول مسیر پوشه ای که قرار است فایلهای داخل آن فشرده شوند ، پارامتر دوم مسیری که قرار است فایل فشرده در ان ایجاد شود و پارامتر سوم نام فایل فشرده شده است که اختیاری میباشد و درصورت عدم مقدار دهی ، برنامه با نام پیشفرض "Update.zip" فایل فشرده را ایجاد میکند
مثال :
using ArazUpdater;
Compress z = new Compress();
z.ZipAllFilesInDirectory("c:\\myfolder", "E:\\temp");
2- تابع ExtractZipFilesToDirectory این تابع یک فایل فشرده را در داخل یک پوشه اکسترکت میکند که دوتا پارامتر میگیره پارامتر اول نام و مسیر فایل فشرده شده است و پارامتر دوم مسیر پوشه ای که در اون فایلهای اکسترکت شده رو میریزه
مثال :
using ArazUpdater;
Compress z = new Compress();
z.ExtractZipFilesToDirectory("c:\\myfolder\\test.z ip", "E:\\temp");

موفق باشید