-
قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
سلام دوستان.
بهترین راه برای افزودن قابلیت آپدیت آنلاین به برنامه های نوشته شده با سی شارپ چی هست؟
اینها برامون مهمه:
راحتی پیاده سازی
راحتی استفاده برای کاربر
چک کردن خودکار آپدیت توسط برنامه و دانلود و نصب خودکار آپدیت
قابل اطمینان بودن و پایدار بودن
ضمنا برنامه یه بخش تنظیمات داره که میخواهیم بعد از بروز رسانی تنظیمات قبلی حفظ بشه.
هم چنین برای نصب برنامه در سیستم های جدید هم میخواهیم به روش مناسب آخرین بروزرسانی در دسترس باشه. و برنامه نصبی هم با InstallShield آماده میشه.
-
1 ضمیمه
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
با سلام
یک روش به صورتی هست که خورد مایکروسافت درون visual studio قرار داده و اینکه از زبانه Publish تنظیمات Project > Properties می تونید اینکارو انجام بدیدو به این صورت که پس از بستن نرم افزار وجود آپدیت رو بررسی می کنه، که آموزشش رو قرار دادم
روش بعد هم اینه که برنامه تون رو بصورت dll بسازید و در هنگام ورود به آدرسی که شما درش قرار میدید وصل میشه
موفق باشید
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
danialafshari
با سلام
یک روش به صورتی هست که خورد مایکروسافت درون visual studio قرار داده و اینکه از زبانه Publish تنظیمات Project > Properties می تونید اینکارو انجام بدیدو به این صورت که پس از بستن نرم افزار وجود آپدیت رو بررسی می کنه، که آموزشش رو قرار دادم
روش بعد هم اینه که برنامه تون رو بصورت dll بسازید و در هنگام ورود به آدرسی که شما درش قرار میدید وصل میشه
موفق باشید
تو روش دوم مثلا کلاسهارو میشه بروزرسانی کرذد .اما اگه نیاز بود فرمها بروزرسانی بشه چی؟
یا کلا روند روش دوم رو در صورت امکان اینجا کامل توضیح بدید که چیکار کنیم؟
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
در روش اول همه کلاس ها و فرم ها بروز رسانی میشه؟ برنامه من یه بخش تنظیمات داره که میخوام بعد بروز رسانی تغییر نکنه و تنظیمات قبلی حفظ بشه.
اگر بروزرسانی موفقیت آمیز نبود، کاربر باید چیکار کنه؟
برای سیستم مشتریان جدید فایل نصبی باید به صورت مجزا تهیه بشه؟ فایل نصبی باید در حین نصب dll های لازم رو رجیستر کنه و یه فایل exe دیگه رو نصب کنه.
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
cprogram
سلام دوستان.
بهترین راه برای افزودن قابلیت آپدیت آنلاین به برنامه های نوشته شده با سی شارپ چی هست؟
اینها برامون مهمه:
راحتی پیاده سازی
راحتی استفاده برای کاربر
چک کردن خودکار آپدیت توسط برنامه و دانلود و نصب خودکار آپدیت
قابل اطمینان بودن و پایدار بودن
ضمنا برنامه یه بخش تنظیمات داره که میخواهیم بعد از بروز رسانی تنظیمات قبلی حفظ بشه.
هم چنین برای نصب برنامه در سیستم های جدید هم میخواهیم به روش مناسب آخرین بروزرسانی در دسترس باشه. و برنامه نصبی هم با InstallShield آماده میشه.
قبل از هرچیز ، لازمه که شما یک دامین اختصاصی و یک هاست داشته باشین (از آپلود سنترهای عمومی نمیشه در این زمینه استفاده کرد)
اگه یه سر به فولدر نصب برنامه ها در ویندوز زده باشین ، میبینید که برنامه های حرفه ای ، یه فایل Updater دارن که مستقل از برنامه اصلی هستش (استفاده از Publish مایکروسافت توصیه نمیشه)
بنابر این شما باید یه پروژه جدید (مستقل از برنامه اصلی) ایجاد کنید.
بعد شما یک فایل txt یا xml یا json که شامل اطلاعات نرم افزار (ورژن و ...) میباشد رو داخل سایت خودتون قرار میدین.
وظیفه این برنامه Updater اینه که لینک مورد نظر (آدرس فایل ) رو چک میکنه و اطلاعات دریافتی رو با نسخه فعلی مقایسه میکنه و در صورتی که آپدیت جدید موجود باشه فایل مورد نظر رو دانلود میکنه و پس از دانلود با فایل اصلی جایگزین میکنه ( این فایل میتونه هرچیزی باشه exe یا dll یا ...) حتی فایل exe اصلی برنامه رو هم میشه جایگزین کرد.
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
336699
قبل از هرچیز ، لازمه که شما یک دامین اختصاصی و یک هاست داشته باشین (از آپلود سنترهای عمومی نمیشه در این زمینه استفاده کرد)
اگه یه سر به فولدر نصب برنامه ها در ویندوز زده باشین ، میبینید که برنامه های حرفه ای ، یه فایل Updater دارن که مستقل از برنامه اصلی هستش (استفاده از Publish مایکروسافت توصیه نمیشه)
بنابر این شما باید یه پروژه جدید (مستقل از برنامه اصلی) ایجاد کنید.
بعد شما یک فایل txt یا xml یا json که شامل اطلاعات نرم افزار (ورژن و ...) میباشد رو داخل سایت خودتون قرار میدین.
وظیفه این برنامه Updater اینه که لینک مورد نظر (آدرس فایل ) رو چک میکنه و اطلاعات دریافتی رو با نسخه فعلی مقایسه میکنه و در صورتی که آپدیت جدید موجود باشه فایل مورد نظر رو دانلود میکنه و پس از دانلود با فایل اصلی جایگزین میکنه ( این فایل میتونه هرچیزی باشه exe یا dll یا ...) حتی فایل exe اصلی برنامه رو هم میشه جایگزین کرد.
من تو شبکه داخلی از این روش استفاده میکنم. تا حالا هم مشکلی نداشتم. من آپدیتهام رو قبل از شروع برنامه انجام میدم. به اینصورت که برنامه بسته شده و برنامه آپدیتر شروع به کپی و جایگزینی میکنه .بعد از اتمام هم برنامه آپدیتر بسته شده و برنامه اصلی اجرا میشه. اما تو سطح وب تا حالا تست نکردم.
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
336699
قبل از هرچیز ، لازمه که شما یک دامین اختصاصی و یک هاست داشته باشین (از آپلود سنترهای عمومی نمیشه در این زمینه استفاده کرد)
اگه یه سر به فولدر نصب برنامه ها در ویندوز زده باشین ، میبینید که برنامه های حرفه ای ، یه فایل Updater دارن که مستقل از برنامه اصلی هستش (استفاده از Publish مایکروسافت توصیه نمیشه)
بنابر این شما باید یه پروژه جدید (مستقل از برنامه اصلی) ایجاد کنید.
بعد شما یک فایل txt یا xml یا json که شامل اطلاعات نرم افزار (ورژن و ...) میباشد رو داخل سایت خودتون قرار میدین.
وظیفه این برنامه Updater اینه که لینک مورد نظر (آدرس فایل ) رو چک میکنه و اطلاعات دریافتی رو با نسخه فعلی مقایسه میکنه و در صورتی که آپدیت جدید موجود باشه فایل مورد نظر رو دانلود میکنه و پس از دانلود با فایل اصلی جایگزین میکنه ( این فایل میتونه هرچیزی باشه exe یا dll یا ...) حتی فایل exe اصلی برنامه رو هم میشه جایگزین کرد.
فکر کنم روش خوبی باشه. در مورد فایل تکست یا xml، این فایل باید دستی تنظیم بشه یا نه به روشی مانند Publish میشه اتوماتش کرد؟
در مورد فایلهایی که روی سرور قرار میگیرند، احتمالا باید فایل نصبی در یک مسیر برای مشتریان جدید در دسترس باشه و فایلهای آپدیت شده نرم افزار های فعال مشتریان فعلی در مسیر دیگری قرار بگیرد. درسته؟ امکان داره یکپارچه باشه و تنها یک فایل نصبی روی سرور قرار بگیره و نرم افزاری های مشتریان فعلی قسمت های بروز شده رو از داخل اون فایل پیدا کنند و بروز رسانی کنند؟
برای اینکه Updater بتونه بفهمه که کدوم قسمت ها نیاز به بروز رسانی دارند، ورژن بخش های مختلف برنامه باید در اون فایل txt یا xml نوشته بشه؟
برای بروز رساتی خود Updater چیکار باید کرد؟
اگر برنامه بروز رسانی شده به هر دلیلی اجرا نشه، بهترین روش برای مقابله با این ایراد چی هست؟ نگه داشتن فایل های آخرین ورژن پایدار؟
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
cprogram
فکر کنم روش خوبی باشه. در مورد فایل تکست یا xml، این فایل باید دستی تنظیم بشه یا نه به روشی مانند Publish میشه اتوماتش کرد؟
در مورد فایلهایی که روی سرور قرار میگیرند، احتمالا باید فایل نصبی در یک مسیر برای مشتریان جدید در دسترس باشه و فایلهای آپدیت شده نرم افزار های فعال مشتریان فعلی در مسیر دیگری قرار بگیرد. درسته؟ امکان داره یکپارچه باشه و تنها یک فایل نصبی روی سرور قرار بگیره و نرم افزاری های مشتریان فعلی قسمت های بروز شده رو از داخل اون فایل پیدا کنند و بروز رسانی کنند؟
برای اینکه Updater بتونه بفهمه که کدوم قسمت ها نیاز به بروز رسانی دارند، ورژن بخش های مختلف برنامه باید در اون فایل txt یا xml نوشته بشه؟
برای بروز رساتی خود Updater چیکار باید کرد؟
اگر برنامه بروز رسانی شده به هر دلیلی اجرا نشه، بهترین روش برای مقابله با این ایراد چی هست؟ نگه داشتن فایل های آخرین ورژن پایدار؟
فایل نصب یه مسیر جدید و فایلهای بروز رسانی در یک مسیر دیگه باشه.
فایل متنی هم کاری نداره که هر از گاهی یه بار ویرایش میهش(من روش کارم به این صورته که تاریخ بروزرسانی رو ثبت میکنم و تو برنامه مشتری تاریخ هارو چک میکنم.بعد آپدیت هم تاریخ مشتری رو هم بروز میکنم)
خودم فعلا کل برنامه رو بروزرسانی میکنم.
برای خود آپدیتر هم میتونی از خود برنامه کمک بگیری. مثلا موقع بسته شدن برنامه. البته همون کار اینبار برعکس.
میتونید قبل از جایگزینی فایلهای وجود رو در یک پوشه ذخیره کرده و بعد اقدام به بروزرسانی کنید. در صورت به وجود اومدن هر گونه ایراد فایلهای قبلی رو دوباره برگردونید
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
رامین مرادی
فایل نصب یه مسیر جدید و فایلهای بروز رسانی در یک مسیر دیگه باشه.
فایل متنی هم کاری نداره که هر از گاهی یه بار ویرایش میهش(من روش کارم به این صورته که تاریخ بروزرسانی رو ثبت میکنم و تو برنامه مشتری تاریخ هارو چک میکنم.بعد آپدیت هم تاریخ مشتری رو هم بروز میکنم)
خودم فعلا کل برنامه رو بروزرسانی میکنم.
برای خود آپدیتر هم میتونی از خود برنامه کمک بگیری. مثلا موقع بسته شدن برنامه. البته همون کار اینبار برعکس.
میتونید قبل از جایگزینی فایلهای وجود رو در یک پوشه ذخیره کرده و بعد اقدام به بروزرسانی کنید. در صورت به وجود اومدن هر گونه ایراد فایلهای قبلی رو دوباره برگردونید
برای سرور که برنامه خاصی یا تنظیمات خاصی نیاز نیست؟ از چه پروتکل ارتباطی استفاده بشه بهتره؟ ftp و ...
برای اینکه بتونم خیلی سریع این قابلیت رو به برنامه ام اضافه کنم، آیا چیز آماده ای هست؟
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
cprogram
برای سرور که برنامه خاصی یا تنظیمات خاصی نیاز نیست؟ از چه پروتکل ارتباطی استفاده بشه بهتره؟ ftp و ...
برای اینکه بتونم خیلی سریع این قابلیت رو به برنامه ام اضافه کنم، آیا چیز آماده ای هست؟
من داخل شبکه دومین استفاده میکنم. تنظیمی نیاز نیست. فقط باید اون پوشه رو همه سیستمها بتونن دسترسی داشته باشن.
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
رامین مرادی
من داخل شبکه دومین استفاده میکنم. تنظیمی نیاز نیست. فقط باید اون پوشه رو همه سیستمها بتونن دسترسی داشته باشن.
برای اینکه سریع بتونم به برنامه خودم همچین قابلیتی اضافه کنم پروژه آماده ای هست که استفاده کنم یا نه؟
شما Updater رو خودتون نوشتید؟
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
cprogram
برای اینکه سریع بتونم به برنامه خودم همچین قابلیتی اضافه کنم پروژه آماده ای هست که استفاده کنم یا نه؟
شما Updater رو خودتون نوشتید؟
پروژه آماده ای ندیدم. بله خودم نوشتم.
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
رامین مرادی
پروژه آماده ای ندیدم. بله خودم نوشتم.
برای افزودن این قابلیت به برنامه من این ها رو توی نت دیدم.
نظرتون در مورد این ها چی هست؟
https://www.codeproject.com/Articles...ation-update-i
https://wyday.com/wybuild/help/automatic-updates/
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
دوستان نظری ندارند؟
راهی برای پیاده سازی سریع روش پیشنهادی آقای مرادی نیست؟
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
cprogram
دوستان نظری ندارند؟
راهی برای پیاده سازی سریع روش پیشنهادی آقای مرادی نیست؟
میخواید تحت شبکه داخلی باشه یا اینترنت؟
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
cprogram
دوستان نظری ندارند؟
راهی برای پیاده سازی سریع روش پیشنهادی آقای مرادی نیست؟
شما یک برنامه به عنوان مثال Updater بساز و فایل exe رو بزار کنار برنامت
این برنامه از توی اینترنت یک فایل متنی رو می خونه(که روشش بارها توی سایت توضیح داده شده جستجو کنید) و بعد اگر ورژن اون فایل از ورژن برنامه بالاتر بود بیاد از روی یک سایت اونو دانلود کنه یا یکار راحت تر مثل برنامه تلگرام دسکتاپ لینک موقع بالا اومدن پیام آپدیت موجود است رو بده و با زدن دانلود بره توی صفحه دانلود.
البته اگر لینک بخواید بدید و خودش دانلود کنه نیازی به برنامه مجزا نیست و می تونید توی همون برنامه اصلی هم انجام بدید
بدست آوردن ورژن که از توی Properties تنظیم میشه:
متد:
public string AssemblyVersion
{
get
{
return System.Reflection.Assembly.GetExecutingAssembly(). GetName().Version.ToString();
}
}
استفاده:
string AppVer = String.Format("Version {0}", AssemblyVersion);
اینم الگوریتم
حالا شما شروع به کدنویسی کنید، مشکل داشتید اینجا مطرح کنید تا دوستان راهنمایی کنند
موفق باشید
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
danialafshari
البته اگر لینک بخواید بدید و خودش دانلود کنه نیازی به برنامه مجزا نیست و می تونید توی همون برنامه اصلی هم انجام بدید
با سلام
این بخش رو یک مقدار توضیح میدید؟
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
سلام
تو همین سایت یادم هست ینفر ی dll در این زمینه نوشته بود....
جست و جوش کنید
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
ر بعضی از سیستم ها جایگزین کردن با مشکل مواجه میشه
مخصوصا وقتی شبکه باشه و فایل اجرایی از روی شبکه اجرا بشه من این مشکل رو دارم و خیلی احتیاج به کمک دارم در این زمینه
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
mostafa_bahar
ر بعضی از سیستم ها جایگزین کردن با مشکل مواجه میشه
مخصوصا وقتی شبکه باشه و فایل اجرایی از روی شبکه اجرا بشه من این مشکل رو دارم و خیلی احتیاج به کمک دارم در این زمینه
خب وقتی فایلی درحال اجرا بشه امکان تغییر تو اون وجود نداره. برنامه شما باید رو تک تک سیستمها نصب باشه و هر کاربر برنامه خودشو اپئدیت کنه یا اینکه اپدیت برنام مرکزی زمانی اتفاق بی افته که هیچ سیستمی اون فایل رو اجرا نکرده باشه
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
سلام برای بروز رسانی برنامه میتونید به این روش استفاده کنید
اول یه فایل xml ایجاد کنید و اطلاعات زیر رو وارد کنید
<?xml version="1.0" encoding="utf-8"?>
<MoalemYar>
<AppVersion>
<version>2.2.5772.0</version>
<url>https://app.com/app.exe</url>
<changelog>
بهبود رابط کاربری
حل مشکلات
افزودن ویژگی های جدید
بهبود تجربه کاربری
</changelog>
</AppVersion>
</MoalemYar>
حالا این فایل رو در اینترنت اپلود کنید
حالا یک پروژه دیگه جدا از پروژه اصلی ایجاد کنید و کدهای زیر رو بنویسید تا این اطلاعات رو دریافت و با ورژن خود برنامه مقایسه کنه
بعدش موقع چک کردن اگر ورژن جدیدی پیدا شد میتونید برنامه اصلی رو ببندید و نسخه جدید رو جایگزین قبلی کنید اگر نتونستید استفاده کنید بگید تا بصورت یک کتابخانه براتون ایجاد کنم
public static string UpdateServer = "https://app.com/Updater.xml";
public const string UpdateXmlTag = "MoalemYar"; //Defined in Xml file
public const string UpdateXmlChildTag = "AppVersion"; //Defined in Xml file
public const string UpdateVersionTag = "version"; //Defined in Xml file
public const string UpdateUrlTag = "url"; //Defined in Xml file
public const string UpdateChangeLogTag = "changelog";
private string newVersion = string.Empty;
private string url = "";
private void CheckUpdate()
{
try
{
newVersion = string.Empty;
ChangeLog = string.Empty;
url = "";
XDocument doc = XDocument.Load(UpdateServer);
var items = doc
.Element(XName.Get(UpdateXmlTag))
.Elements(XName.Get(UpdateXmlChildTag));
var versionItem = items.Select(ele => ele.Element(XName.Get(UpdateVersionTag)).Value);
var urlItem = items.Select(ele => ele.Element(XName.Get(UpdateUrlTag)).Value);
var changelogItem = items.Select(ele => ele.Element(XName.Get(UpdateChangeLogTag)).Value);
newVersion = versionItem.FirstOrDefault();
url = urlItem.FirstOrDefault();
ChangeLog = changelogItem.FirstOrDefault();
CompareVersions();
}
catch (Exception)
{
}
}
private void CompareVersions()
{
if (IsVersionLater(newVersion, getAppVersion.ToString()))
{
txtNewVersion.Content = newVersion;
txtNewVersion.Foreground = new SolidColorBrush(Colors.Green);
txtNewVersion.Visibility = Visibility.Visible;
txtChangeLog.Visibility = Visibility.Visible;
txtChangeLog.Text = ChangeLog;
showNotification(Update_KEY, true, newVersion, url);
}
else
{
showNotification(Update_KEY, false);
txtNewVersion.Content = "شما از آخرین نسخه استفاده می کنید";
txtNewVersion.Visibility = Visibility.Visible;
}
}
public static bool IsVersionLater(string newVersion, string oldVersion)
{
// split into groups
string[] cur = newVersion.Split('.');
string[] cmp = oldVersion.Split('.');
// get max length and fill the shorter one with zeros
int len = Math.Max(cur.Length, cmp.Length);
int[] vs = new int[len];
int[] cs = new int[len];
Array.Clear(vs, 0, len);
Array.Clear(cs, 0, len);
int idx = 0;
// skip non digits
foreach (string n in cur)
{
if (!Int32.TryParse(n, out vs[idx]))
{
vs[idx] = -999; // mark for skip later
}
idx++;
}
idx = 0;
foreach (string n in cmp)
{
if (!Int32.TryParse(n, out cs[idx]))
{
cs[idx] = -999; // mark for skip later
}
idx++;
}
for (int i = 0; i < len; i++)
{
// skip non digits
if ((vs[i] == -999) || (cs[i] == -999))
{
continue;
}
if (vs[i] < cs[i])
{
return (false);
}
else if (vs[i] > cs[i])
{
return (true);
}
}
return (false);
}
private void btnCheckUpdate_Click(object sender, RoutedEventArgs e)
{
CheckUpdate();
}
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
barnamenevisjavan
سلام برای بروز رسانی برنامه میتونید به این روش استفاده کنید
اول یه فایل xml ایجاد کنید و اطلاعات زیر رو وارد کنید
<?xml version="1.0" encoding="utf-8"?>
<MoalemYar>
<AppVersion>
<version>2.2.5772.0</version>
<url>https://app.com/app.exe</url>
<changelog>
بهبود رابط کاربری
حل مشکلات
افزودن ویژگی های جدید
بهبود تجربه کاربری
</changelog>
</AppVersion>
</MoalemYar>
حالا این فایل رو در اینترنت اپلود کنید
حالا یک پروژه دیگه جدا از پروژه اصلی ایجاد کنید و کدهای زیر رو بنویسید تا این اطلاعات رو دریافت و با ورژن خود برنامه مقایسه کنه
بعدش موقع چک کردن اگر ورژن جدیدی پیدا شد میتونید برنامه اصلی رو ببندید و نسخه جدید رو جایگزین قبلی کنید اگر نتونستید استفاده کنید بگید تا بصورت یک کتابخانه براتون ایجاد کنم
public static string UpdateServer = "https://app.com/Updater.xml";
public const string UpdateXmlTag = "MoalemYar"; //Defined in Xml file
public const string UpdateXmlChildTag = "AppVersion"; //Defined in Xml file
public const string UpdateVersionTag = "version"; //Defined in Xml file
public const string UpdateUrlTag = "url"; //Defined in Xml file
public const string UpdateChangeLogTag = "changelog";
private string newVersion = string.Empty;
private string url = "";
private void CheckUpdate()
{
try
{
newVersion = string.Empty;
ChangeLog = string.Empty;
url = "";
XDocument doc = XDocument.Load(UpdateServer);
var items = doc
.Element(XName.Get(UpdateXmlTag))
.Elements(XName.Get(UpdateXmlChildTag));
var versionItem = items.Select(ele => ele.Element(XName.Get(UpdateVersionTag)).Value);
var urlItem = items.Select(ele => ele.Element(XName.Get(UpdateUrlTag)).Value);
var changelogItem = items.Select(ele => ele.Element(XName.Get(UpdateChangeLogTag)).Value);
newVersion = versionItem.FirstOrDefault();
url = urlItem.FirstOrDefault();
ChangeLog = changelogItem.FirstOrDefault();
CompareVersions();
}
catch (Exception)
{
}
}
private void CompareVersions()
{
if (IsVersionLater(newVersion, getAppVersion.ToString()))
{
txtNewVersion.Content = newVersion;
txtNewVersion.Foreground = new SolidColorBrush(Colors.Green);
txtNewVersion.Visibility = Visibility.Visible;
txtChangeLog.Visibility = Visibility.Visible;
txtChangeLog.Text = ChangeLog;
showNotification(Update_KEY, true, newVersion, url);
}
else
{
showNotification(Update_KEY, false);
txtNewVersion.Content = "شما از آخرین نسخه استفاده می کنید";
txtNewVersion.Visibility = Visibility.Visible;
}
}
public static bool IsVersionLater(string newVersion, string oldVersion)
{
// split into groups
string[] cur = newVersion.Split('.');
string[] cmp = oldVersion.Split('.');
// get max length and fill the shorter one with zeros
int len = Math.Max(cur.Length, cmp.Length);
int[] vs = new int[len];
int[] cs = new int[len];
Array.Clear(vs, 0, len);
Array.Clear(cs, 0, len);
int idx = 0;
// skip non digits
foreach (string n in cur)
{
if (!Int32.TryParse(n, out vs[idx]))
{
vs[idx] = -999; // mark for skip later
}
idx++;
}
idx = 0;
foreach (string n in cmp)
{
if (!Int32.TryParse(n, out cs[idx]))
{
cs[idx] = -999; // mark for skip later
}
idx++;
}
for (int i = 0; i < len; i++)
{
// skip non digits
if ((vs[i] == -999) || (cs[i] == -999))
{
continue;
}
if (vs[i] < cs[i])
{
return (false);
}
else if (vs[i] > cs[i])
{
return (true);
}
}
return (false);
}
private void btnCheckUpdate_Click(object sender, RoutedEventArgs e)
{
CheckUpdate();
}
امکان داره بصورت یک پروژه قرار بدید
-
1 ضمیمه
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
Helpco
امکان داره بصورت یک پروژه قرار بدید
براتون پیوست کردم
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
خوب اگه بخوایم فایل های دیگه رو هم آپدیت کنیم چی ؟ مثلا عکسی . یا dll باید اضافه کنیم
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
NasimBamdad
خوب اگه بخوایم فایل های دیگه رو هم آپدیت کنیم چی ؟ مثلا عکسی . یا dll باید اضافه کنیم
هر فایلی خواستین بزارین داخل زیپ بعدش که برنامه دانلود کرد خودش انزیپ و جایگزین کنه
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
barnamenevisjavan
هر فایلی خواستین بزارین داخل زیپ بعدش که برنامه دانلود کرد خودش انزیپ و جایگزین کنه
خوب من تابعی برای آنزیپ و اینطور چیزا ندیدم
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
NasimBamdad
خوب من تابعی برای آنزیپ و اینطور چیزا ندیدم
اونا دیگه کاری نداره خودتون میتونید انجام بدین من فقط نحوه چک کردن رو قرار دادم حالا اگه مشکل دارین بگین تا نسخه کامل بروزرسانی رو قرار بدم
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
NasimBamdad
خوب من تابعی برای آنزیپ و اینطور چیزا ندیدم
این سورس رو دانلود کنید نسخه کامل هستش از برنامه خودتون اپدیت رو چک میکنید در صورت وجود نسخه جدید اپدیتر رو اجرا میکنه و شروع به دانلود میکنه بعدش فایل rar رو باز میکنه و...
برنامه رو بیلد و دمو رو اجرا کنید
http://s8.picofile.com/file/83515257...dater.rar.html
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
barnamenevisjavan
این خطا رو میده
http://s9.picofile.com/file/8351776434/021.PNG
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
booysusa
چک کردم مشکلی نداره اگر کدها یا لینک اپدیت رو تغییر دادین بگین تا بهتر راهنمایی کنم، خطایی که گرفته مربوط به ارگومان هستش، تو برنامه اصلی اپدیت رو چک میکنیم و در صورتی که موجود باشه برنامه اپدیتر رو اجرا میکنیم و لینک دانلود اپدیت جدید رو بهش پاس میدیم چک کنید ببینید لینک دانلود موجود هست یا ن شاید خالی هست بخاطر اون خطا میده
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
با سلام و تشکر از شما
دیتابیس رو چیکار میکنید
چون ممکنه هر کدوم از مشتریها نسخه های مختلفی از برنامه و دیتابیس داشته باشن
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
rahmatipoor
با سلام و تشکر از شما
دیتابیس رو چیکار میکنید
چون ممکنه هر کدوم از مشتریها نسخه های مختلفی از برنامه و دیتابیس داشته باشن
سلام دیتابیس رو هم با migration راحت میشه حلش کرد
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
barnamenevisjavan
چک کردم مشکلی نداره اگر کدها یا لینک اپدیت رو تغییر دادین بگین تا بهتر راهنمایی کنم، خطایی که گرفته مربوط به ارگومان هستش، تو برنامه اصلی اپدیت رو چک میکنیم و در صورتی که موجود باشه برنامه اپدیتر رو اجرا میکنیم و لینک دانلود اپدیت جدید رو بهش پاس میدیم چک کنید ببینید لینک دانلود موجود هست یا ن شاید خالی هست بخاطر اون خطا میده
برای منم خطا میده
System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'
همون آرگمان url = args[0];
فایل هم موجوده و ....
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
NasimBamdad
برای منم خطا میده
System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'
همون آرگمان url = args[0];
فایل هم موجوده و ....
به نظر من یا فایل xml مشکل داره یا فایل رو در جای مناسب اپلود نکردین
پروژتون رو قرار بدین بررسی کنم
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
پاک شود پاک شود پاک شود پاک شود
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
بالاخره موفق شدم.
مشکل این بود در فایل xmlاز https استفاده کرده بودم
عزیزان دقت کنید که ملاک رو پروژه کامپایل شده در پست بالا قرار ندادید و. اون رو اجرا نگیرید.
فایل dll رو بر اساس نیاز هاتون تغییر بدید و کامپایل و کنار پروژه قرار بدید.
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
1- اون آدرس فایل اجرایی نرم افزار رو چه طوری میشه از برنامه خودمون بهش پاس بدیم ؟ اینکه برای پروژه های زیاد صرفه جویی وقت مهمه
System.Diagnostics.Process.Start("WareHouse.exe");
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
یه مشکل دیگه هم هست که بنده ورژن فایلم با ورژنی که در فایل xml تعیین شده یکی هست ، اما بازم پیغام آپدیت رو میده
-
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
نقل قول:
نوشته شده توسط
NasimBamdad
1- اون آدرس فایل اجرایی نرم افزار رو چه طوری میشه از برنامه خودمون بهش پاس بدیم ؟ اینکه برای پروژه های زیاد صرفه جویی وقت مهمه
System.Diagnostics.Process.Start("WareHouse.exe");
نقل قول:
نوشته شده توسط
NasimBamdad
یه مشکل دیگه هم هست که بنده ورژن فایلم با ورژنی که در فایل xml تعیین شده یکی هست ، اما بازم پیغام آپدیت رو میده
برای پاس دادن ادرس فایل، مثل پاس دادن لینک عمل کنید، کافیه یه ارگومان دیگه اضافه کنید
System.Diagnostics.Process.Start("AppUpdater.exe", AppUpdater.Updater.url, "Harchi ke Hast");
و داخل اپدیتر برنامه هم به این صورت ارگومانو دریافت کنین
MessageBox.Show(args[1];)
کافیه اندیس args رو تغییر بدین
برای مورد اخر هم دقت کنید که باید ورژن برنامه بصورت 4 رقمی تعیین کنین
هم تو داخل برنامه
1.0.0.0 و هم داخل فایل کانفیگ 1.0.0.0 هیچ مشکلی نداره در صورتی که ورژن یکی باشه اپدیت دریافت نمیشه
-
1 ضمیمه
نقل قول: قابلیت به روز رسانی خودکار برای برنامه های Windows Form Application
اینم نمونه عکسی که گذاشتم برای ورژن ها