PDA

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



barman.ar16
یک شنبه 13 خرداد 1397, 13:29 عصر
دوستان من به کمک تاپیک های مربوطه ای که درون همین انجمن بود من یه چیزایی دستگیرم شده در ادامه میگم هر جاش ایراد داشت لطفا راهنمایی کنید

ابتدا من توی فرم اصلی برنامه ام یک قسمت شماره نگارش برنامه رو نوشتم
خب با اجرای برنامه اگر اینترنت در دسترس باشه (چون برنامه ام آفلاین آنلاین هست) از طریق دیتابیس آنلاین خودم چک می کنم ببینم شماره نگارش فعلی برنامه چند هست

توی تاپیک های دیگه دیدم از روش فایل تکست یا xml استفاده شده بود من ترجیح دادم از جدول دیتابیس بخونم

خب تا اینجای کار من چک می کنم ببینم شماره نگارش نوشته شده کوچکتر از شماره نگارش ثبت شده در جدول دیتابیس هست یا نه که اگر کوچکتر بود یعنی نگارش جدید هست و من بصورت یک پیغام اون رو برای کاربر نمایش میدم و از اونجایی که آپدیت اختیاری هست و برای رفع ایرادات جزیی برنامه هست اگر دوست داشتن میتونن روی همون پیام کلیک کنند و آپدیت رو دریافت کنند

خب اینجا چند تا سوال برای من پیش میاد
1- من آپدیتر جداگانه ندارم بنابراین برای نصب آپدیت جدید باید کاربر رو مجبور کنم برنامه رو ببنده درسته؟
2- میتونم فایل زیپ شده آپدیت برنامه رو جایی دیگه ای غیر از هاست خودم قرار بدم چون ترافیک هاست رو بالا نبره و هاست رو درگیر نکنه؟
3- میشه روی فایل زیپ شده پسورد گذاشت؟
4- بعد از دریافت فایل آپدیت پروسه باز کردنش و نصب اون رو ممنون میشم یک اشاره ای بهش بکنید؟
5- برای ساخت فایل آپدیت اگر تغییرات جزیی باشه دیگه نیازی نیست که فایل های dll رو هم قرار بدم درسته؟

ممنون

danialafshari
یک شنبه 13 خرداد 1397, 14:09 عصر
با سلام

1- من آپدیتر جداگانه ندارم بنابراین برای نصب آپدیت جدید باید کاربر رو مجبور کنم برنامه رو ببنده درسته؟
مانند تمامی نرم افزار های دیگه مخصوصاً آنتی ویروس ها، بهتره یک Updater جدا کنار برنامه بسازید که وقتی در برنامه مطلع شد که آپدیت جدید وجود داره Updater باز میشه و شروع به دانلود میکنه و چون باید روی فایل جاری Copy انجام بگیره باید برنامه اصلی کامل بسته بشه

2- میتونم فایل زیپ شده آپدیت برنامه رو جایی دیگه ای غیر از هاست خودم قرار بدم چون ترافیک هاست رو بالا نبره و هاست رو درگیر نکنه؟
بله مشکلی نداره ولی بهتره در هاست خودتون باشه یک دلیلش اینه که مطمئن هستید که دائمی هست

3- میشه روی فایل زیپ شده پسورد گذاشت؟
بله قبلاً Sample کار با فایل های Zip رو گذاشتم و علاوه بر این در سایت هم موجود هست، کتابخانه Ionic رو جستجو کنید البته با پسوردش کار نکردم ولی باید بشه

4- بعد از دریافت فایل آپدیت پروسه باز کردنش و نصب اون رو ممنون میشم یک اشاره ای بهش بکنید؟

Copy/Paste هست

5- برای ساخت فایل آپدیت اگر تغییرات جزیی باشه دیگه نیازی نیست که فایل های dll رو هم قرار بدم درسته؟
خیر نیازی نیست
موفق باشید

رامین مرادی
یک شنبه 13 خرداد 1397, 15:26 عصر
دوستان من به کمک تاپیک های مربوطه ای که درون همین انجمن بود من یه چیزایی دستگیرم شده در ادامه میگم هر جاش ایراد داشت لطفا راهنمایی کنید

ابتدا من توی فرم اصلی برنامه ام یک قسمت شماره نگارش برنامه رو نوشتم
خب با اجرای برنامه اگر اینترنت در دسترس باشه (چون برنامه ام آفلاین آنلاین هست) از طریق دیتابیس آنلاین خودم چک می کنم ببینم شماره نگارش فعلی برنامه چند هست

توی تاپیک های دیگه دیدم از روش فایل تکست یا xml استفاده شده بود من ترجیح دادم از جدول دیتابیس بخونم

خب تا اینجای کار من چک می کنم ببینم شماره نگارش نوشته شده کوچکتر از شماره نگارش ثبت شده در جدول دیتابیس هست یا نه که اگر کوچکتر بود یعنی نگارش جدید هست و من بصورت یک پیغام اون رو برای کاربر نمایش میدم و از اونجایی که آپدیت اختیاری هست و برای رفع ایرادات جزیی برنامه هست اگر دوست داشتن میتونن روی همون پیام کلیک کنند و آپدیت رو دریافت کنند

خب اینجا چند تا سوال برای من پیش میاد
1- من آپدیتر جداگانه ندارم بنابراین برای نصب آپدیت جدید باید کاربر رو مجبور کنم برنامه رو ببنده درسته؟
2- میتونم فایل زیپ شده آپدیت برنامه رو جایی دیگه ای غیر از هاست خودم قرار بدم چون ترافیک هاست رو بالا نبره و هاست رو درگیر نکنه؟
3- میشه روی فایل زیپ شده پسورد گذاشت؟
4- بعد از دریافت فایل آپدیت پروسه باز کردنش و نصب اون رو ممنون میشم یک اشاره ای بهش بکنید؟
5- برای ساخت فایل آپدیت اگر تغییرات جزیی باشه دیگه نیازی نیست که فایل های dll رو هم قرار بدم درسته؟

ممنون

سلام وقت بیخر منم طبق گفته آقای افشاری یه برنامه مستقل کوچیک دارم کنار برنامه اصلیم که برا آپدیت هست. وقتی برنامم اجرا میشه یه فایل متنی رو میخونم اگه با ورژن برنامم یکی نبود میفهمم که آپدیت جدیدی هست و برنامه آپدیتر رو اجرا میکنم و برنامه جاری رو میبندم . آپدیتر شروع میکنه به کپی کردن فایل های آپدیت از یک پوشه و مسیر بخصوص و در محل برنامه جایگذاری میکنه. بعد اینکه کار کپی برنامه تموم میشه برنامه اصلی رو اجرا میکنه و خود آپدیتر رو میبندم. همین . یه پروسه راحت.

c0mmander
یک شنبه 13 خرداد 1397, 16:38 عصر
دوستان من به کمک تاپیک های مربوطه ای که درون همین انجمن بود من یه چیزایی دستگیرم شده در ادامه میگم هر جاش ایراد داشت لطفا راهنمایی کنید

ابتدا من توی فرم اصلی برنامه ام یک قسمت شماره نگارش برنامه رو نوشتم
خب با اجرای برنامه اگر اینترنت در دسترس باشه (چون برنامه ام آفلاین آنلاین هست) از طریق دیتابیس آنلاین خودم چک می کنم ببینم شماره نگارش فعلی برنامه چند هست

توی تاپیک های دیگه دیدم از روش فایل تکست یا xml استفاده شده بود من ترجیح دادم از جدول دیتابیس بخونم

خب تا اینجای کار من چک می کنم ببینم شماره نگارش نوشته شده کوچکتر از شماره نگارش ثبت شده در جدول دیتابیس هست یا نه که اگر کوچکتر بود یعنی نگارش جدید هست و من بصورت یک پیغام اون رو برای کاربر نمایش میدم و از اونجایی که آپدیت اختیاری هست و برای رفع ایرادات جزیی برنامه هست اگر دوست داشتن میتونن روی همون پیام کلیک کنند و آپدیت رو دریافت کنند

خب اینجا چند تا سوال برای من پیش میاد
1- من آپدیتر جداگانه ندارم بنابراین برای نصب آپدیت جدید باید کاربر رو مجبور کنم برنامه رو ببنده درسته؟
2- میتونم فایل زیپ شده آپدیت برنامه رو جایی دیگه ای غیر از هاست خودم قرار بدم چون ترافیک هاست رو بالا نبره و هاست رو درگیر نکنه؟
3- میشه روی فایل زیپ شده پسورد گذاشت؟
4- بعد از دریافت فایل آپدیت پروسه باز کردنش و نصب اون رو ممنون میشم یک اشاره ای بهش بکنید؟
5- برای ساخت فایل آپدیت اگر تغییرات جزیی باشه دیگه نیازی نیست که فایل های dll رو هم قرار بدم درسته؟

ممنون

من بصورت کلی از روش اپدیت خودکار استفاده میکنم (با تغییراتی متناسب با پلفرم و نوع پروژه کاریم)

شما برنامه رو که چک میکنی برای نسخه جدید حالا نسخه جدید موجود بود.قبل از هشدار به کاربر:

1- شروع به دانلود و ذخیره سازی نسخه جدید برنامه
1-1- برنامه به درستی دانلود شد
1-2- خطایی در شبکه وجود داره مجددا بعد از رفع خطا یا برقراری ارتباط دانلود از سرگیری بشه...

بعد از تموم شدن دانلود:
1- نیاز به اکسترکت و کپی دارد یا خیر عملیات انجام شود و اپدیت اماده نصب بشه
2- نمایش دکمه آپدیت به کاربر جهت نصب نسخه جدید یا اجرای اپدیتر بصورت خودکار

بعد از زدن دکمه یا اجرا خودکار اپدیتر:
1- بستن برنامه
2- کپی کردن فایلها یا اجرای اینستالر
3- اجرای مجدد برنامه توسط اپدیتر یا اینستالر

اول این سیستم دانلود خودکار بسیار کارآمد هست اما باید تظیماتی رو برای غیر فعال سازی و مدیریتش توسط کاربر انجام بدید(تعدادی از کاربرها تمایلی ندارند برای بروز بودن)
دوم این سیستم توانایی این رو داره که اگر یک hot fix دارید بصورت سریع بروز رسانی رو انجام بدید بدون نیاز به مجوز کاربر(مثل پچ های امنیتی و یا اعتبار سنجی)
سوم این سیستم باز هم قابلیت این رو داره که فایل هایی رو بشه فقط با جایگذاری ارتقا داد و نیازی به اینتسالر هم نباشه.

barman.ar16
دوشنبه 14 خرداد 1397, 12:59 عصر
از اساتید بزرگوار ممنونم بابت راهنمایی های ارزشمندشون

دوستان پس اینطور که متوجه شدم من در واقع میام یک برنامه کوچک درست می کنم که کارش دانلود فایل زیپ از هاستم هست و اون رو جایی که برنامه آپدیترم هست بازش می کنم و برنامه آپدیت هم دقیقا کنار فایل exe برنامه اصلی ام هست
تا اینجای کار مشکلی نیست فقط یه سوال برام پیش اومد و اینکه برنامه آپدیتر من خودش یکسری فایل dll داره خب من اگر بخوام اون رو کنار فایل exe برنامه اصلی ام بریزم با فایل های dll برنامه اصلی تداخلی ایجاد نمی کنه(البته فکر کنم یکسری dll ها مشترک هم بشن)

و سوال آخر اینکه من بعد از اینکه فایل زیپ رو دانلود کردم باید اون رو باز کنم و کپی پست کنم درون فولدر برنامه ام خب برای این کار نیاز به کامپوننت خاصی هست یا به کتابخونه خاصی مثل همونی که استاد افشاری گفتند ionic یا میشه با پیشفرض های ویژوال این کار رو انجام داد

ممنون

danialafshari
سه شنبه 15 خرداد 1397, 00:51 صبح
با سلام
شما لطف دارید من استاد نیستم و شاگردم و هر روز و در زمان آزادم سعی میکنم یک چیز جدید یاد بگیرم

تا اینجای کار مشکلی نیست فقط یه سوال برام پیش اومد و اینکه برنامه آپدیتر من خودش یکسری فایل dll داره خب من اگر بخوام اون رو کنار فایل exe برنامه اصلی ام بریزم با فایل های dll برنامه اصلی تداخلی ایجاد نمی کنه(البته فکر کنم یکسری dll ها مشترک هم بشن)
مهم نیست جای فیزیکی فایل آپدیتر کجا باشه حتی میتونید در یک پوشه کنار برنامتون هم قرارش بدید و فایل dll خاصی هم نیاز نداره فقط Ionic چون اون Updater هم سرچ میکنه که ببینه آیا نسخه جدیدی هست و در صورت وجود دانلود میکنه و بعد از پایان دانلود برنامه اصلی رو Process ش رو میبینده(kill) میکنه تا خطایی موقع جایگذاری پیش نیاد

و سوال آخر اینکه من بعد از اینکه فایل زیپ رو دانلود کردم باید اون رو باز کنم و کپی پست کنم درون فولدر برنامه ام خب برای این کار نیاز به کامپوننت خاصی هست یا به کتابخونه خاصی مثل همونی که استاد افشاری گفتند ionic یا میشه با پیشفرض های ویژوال این کار رو انجام داد
کتابخانه Ionic خیلی کتابخانه خوب و کاملیه و هدف از ساخت کتابخانه ها ساده کردن کدنویسی و عدم درگیر شدن برنامه نویس با کدهای بیشتر هست
و در جواب سوالتون بگم بله با ویژوال استودیو هم میشه، مطمئناً خود Ionic هم در خودش از کلاس های ویژوال استودیو استفاده میکنه. میتونید System.IO.Compression (https://msdn.microsoft.com/en-us/library/system.io.compression.zipfile%28v=vs.110%29.aspx?f =255&MSPPError=-2147217396) و لینک های زیر رو مطالعه کنید
http://barnamenevis.org/showthread.php?298420-ZIP-%DA%A9%D8%B1%D8%AF%D9%86-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-%D8%A8%D9%88%D8%B3%DB%8C%D9%84%D9%87-%DB%8C-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE
https://docs.microsoft.com/en-us/dotnet/standard/io/how-to-compress-and-extract-files
https://stackoverflow.com/questions/940582/how-do-i-zip-a-file-in-c-using-no-3rd-party-apis
https://www.codeproject.com/Articles/381661/Creating-Zip-Files-Easily-in-NET
https://programming.tosinso.com/tips/32861/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-zip-%D8%AF%D8%B1-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE
موفق باشید