نمایش نتایج 1 تا 16 از 16

نام تاپیک: بروزرسانی پروژه ( آبدیت پروژه از طریق وب )

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    Question بروزرسانی پروژه ( آبدیت پروژه از طریق وب )

    سلام، بعضا پروژمون مشکلاتی باگی چیزی داره رفع میکنیم یا امکان جدیدی رو اضافه میکنیم به پروژه و تغیراتی از این دست، که خب نیازه که این نسخه جدید نرم افزار رو بدیم به کاربرا، که خب یه راه اینه که نسخه جدید ( نسخه 2 مثلا ) رو بزاریم تو سایت، کاربر که داره از نسخه قدیمی ( نسخه 1 ) استفاده میکنه، باید بره تو اون سایت و نسخه جدید رو دانلود، نسخه قبلی رو پاک، و نسخه جدید رو نصب کنه که خب کاربر تو خواب بره سراغ اون سایت و نسخه جدید رو دانلود کنه فلذا نیازه که تو خود پروژه بیایم بررسی کنیم که نسخه جدید هستش یا نه و به کاربر اطلاع بدیم، تا اگه دوس داشت رو دکمه مربوطه کلیک کنه و نسخه جدید دانلود بشه و نصب بشه و جایگزین نسخه قبلی بشه که خب این روش بهتری هستش، اما چطور پیاده سازیش کنیم که موارد زیر توش رعایت بشه حدالمقدور :

    1) توقعات من برنامه نوبس و کاربر :
    1.1) تا حد امکان فایلی نرم افزار برای کاربر دانلود میکنه ( همون نسخه جدید نرم افزار )، حجمش کم باشه و فقط فایل هایی که تغییر کردن رو کاربر دانلود کنه، ممکنه 50 میگ عکس به عنوان Resource داشته باشه پروژم که خب ممکنه تا نسخه شونصد ام هم تغییر نکنه، آیا کاربر باید هرباید 50 میگ داده تکراری دانلود کنه؟ اگه بشه که فقط فایل هایی که تغییر کردن، توسط کاربر دانلود بشه که عالی میشه، اما شدنی هستش؟
    1.2) مشکلی از نظر دیتابیس و تنظیمات توی فایل های aaa.settings نداشته باشیم، خب یه سری جداول توی دیتابیس هستش که داده از قبل توش وجود داره و نرم افزار فقط میخونه اونا رو، ReadOnly و تغییری درشون داده نمیشه؛ اما یه سری جداول داخل دیتابیس هستش که داده های مناسب کاربر داخلشون ذخیره میشه و یه سری متغییر داخل فایل های aaa.settings هستش که داده هاش ممکنه برا من کاربر یه مقداری داشته باشه و برا کاربر دیگه یه مقدار دیگه، مثلا آخرین صفحه قرآن مطالعه شده که داخل فایل های aaa.settings قرار میگیره مثلا من تا صفحه A خوندم و یه کاربر دیگه تا صفحه B و یکیدیگه ممکنه C، مقادیر ممکنه متفاوت باشه؛ حرفم اینه که این داده های داخل فایل هایی با فرمت settings و دیتابیس با بروزرسانی نرم افزار، مشکلی براشون ایجاد نشه.
    1.3) وقتی کاربر رو دکمه دانلود کلیک کرد، نسخه قدیمی پاک بشه، نسخه جدید بجاش نصب بشه، محل نصب هم تغییر نکنه، یه شورتکات هم بندازه تو دسکتاپ
    1.4) بعضی وقتا کد پروژه تغییر میکنه، بعضی وقتا ممکنه دیتابیس هم تغییر کنه، اطلاعات بعضی جداول Readonly تغییر بکنه و اصلاح بشه و یا یه جدول حذف و یا اضافه بشه و تغییراتی از این دست.

    2) انواع روش بروزرسانی :
    2.1) خب یه سری نرم افزارا مثلا مثل Filezilla وقتی نسخه جدیدی باشه، خودش دانلود میکنه و در اجرای بعدی پروژه، به کاربر میگه این نسخه جدیدو دانلود کردم، میخوای برات نصبش کنم! ( یعنی بنظرم باید خودش فایلی که دانلود کرده رو، نصبش هم بکنه دیگه، پرسش از کاربر دیگه چیه آخه! مگه موقع دانلودش سوال کردی از ما!
    2.2) اما یه سری از نرم افزار های دیگه یه دکمه ( معمولا تو منو Help، بالای نرم افزار ) دارن که روشون کلیک میکنه برای بررسی وجود نسخه جدید؛
    2.3) معمولا اکثر نرم افزار ها یه گزینه ( تو تنظیماتشون ) دارن که بررسی دوره ای وجود نسخه جدید، که مثلا ساعتی یکبار باشه، روزانه باشه، هر مقوع نرم افزار اجرا شد بره بررسی کنه که نسخه جدیدی هستش یا نه، یا کلا بررسی نکنه ( که خب معمولا خودم میزارمش رو گزینه : بررسی نکن که یوقت مشکلی برا کرک پیش نیاد، از قسمت فایروال هم دسترسیشو مسدود میکنم به اینترنت برا اطمینان بیشتر )
    نتیجه : خب ما میتونیم از تمام این 3 روش استفاده کنیم، که یه سری تنظیمات تو پروژه بزاریم که بررسی دوره ای بروزرسانی چندوقت یکبار انجام بشه، خودش خودکار دانلود کنه یا از کاربر اجازه بگیره، خودش خودکار نصب کنه و یا از کاربر اجازه بگیره و... هرطوری حال کردیم میشه کدشو زد، این قسمت مشکلی نداریم

    3) اما، اصل داستان، نحوه پیاده سازی بروزرسانی برای پروژه :
    خب حالا چطوری این داستان بروزرسانی رو اجرایی کنیم که اون قسمت ( توقعات ) هم لحاظ بشه؟ روش هایی که میدونم وجود داره رو در زیر میگم، روش بهتری اگه سراغ دارید ذکر کنید لطفا :
    3.1) یه روش که به ذهنم میرسه اینه که یه کدی سمت PHP بزنیم و فایل هارو تو هاست قرار بدیم، پروژه سمت کاربر یه درخواست میده به سرور و نسخه خودشو هم تو درخواست ذکر میکنه، تو سمت سرور بررسی میکنم که نرم افزار کاربر آبدیت هستش یا نه، اگه آبدیت بود که هیچ، وگرنه یه لینک دانلود، و سری متن ( که حاوی تغییرات نسخه جدید هستش ) برای کاربر ارسال میکنیم و پروژه سمت کاربر هم این موضوع وجود نسخه جدید رو به کاربر نشون میده و کاربر دوست داشت دکمه دانلودو میزنه و برنامشو بروزرسانی میکنه و...؛ که تو این لینک یه نمونه آموزش رو مشاهده میکنید : بررسی بروزرسانی نرم افزار با استفاده از C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎‎‎‎ و PHP، اینم یه نمونه لینک دیگه که توش یه کد آماده هستش : Code to check for updates, install new version of app
    3.2) اما یه روشی که اکثر مطالب توی نت فارسی بهش پرداختن بحث ClickOnce Update تو قسمت Publish پروژه هستش ( که خب قابلیت خود ویژوال استدیو هستش )، که خب از قیافش و ظاهرش که بررسی میکنه بروزرسانی رو، من تا حالا تو هیچ نرم افزاری ندیدم که این مدلی باشه، حالا شاید خیلی از نرم افزار ها از همین روش استفاده کردن ولی ظاهر داستان رو تغییر دادن و... نمونه مطلب آموزش این داستان ( فیلم ) : آپدیت نرم افزار از طریق وب در سی شارپ، یه مطلب مرتبط دیگه : Adding automatic updates to your program - Part 1
    3.3) یه چند تا کتابخونه تو github پیدا کردم که فک کنم برا همین موضوع باشن، حالا این که از چه روشی اینا استفاده میکنن و.. رو نیمدونم ولی فک کنم شبیه همین مورد 1 که در بالا ذکر کردم باشه روال کارشون :
    3.3.1) squirrel.windows :
    تو این مورد هر نسخه از پروژه تبدیل به یه ناگت پکیج میشه فایل اجرایی طبق این ناگت پکیج ها تشخیص میده که بروزرسانی موجوده یا نه، حالا چرا از ناگت پکیج استفاده کرده رو نیمدونم چه مزایایی داره و... رو نیمدونم؛ بزرگترین مشکلی که فعلا داره اینه که با DOT-NET-FRAMEWORK سازگاره فقط! ولی با DOT-NET-CORE ( نسخه 3 ) و DOT-NET ( نسخه 5 ) سازگار نی، این ماکروسافت هم با اسمای DOT-NET بازی میکنه و آدمو گیج میکنه ( احتملا اسم نسخه 7 بشه DOT !!!! والا )؛ در هر صورت من با این کتابخونه اصلا حال نکردم، شما رو نمیدونم؛ آموزش مرتبط با این کتابخونه : C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ Desktop App Deployment with Squirrel - Easier than MSI Files, Better than ClickOnce
    3.3.2) NetSparkle : ...
    3.3.3) NAppUpdate : ...
    3.3.4) AutoUpdater.NET : خب این کتابخونه طبق اسنادش تو سایت github شبیه روشی که در قسمت 3.1 ذکر کردم رو اومده استفاده کرده، تقریبا میشه گفت همونی که من تو ذهنم بود رو اومده پیاده سازی کرده، پارامتر هاش به این صورته : 1) version : که نسخه نرم افزار رو تعیین میکنه 2) url : لینک دانلود فایل zip نسخه جدید ( یا هر فرمت از پیش تعریف شده دیگه ای ) 3) changelog : لیست تغییرات نسخه فوق ( یه چند خط توضیحات فرضش کنید فعلا ) 4) mandatory : آیا دانلود کردن این نسخه اجرای هستش یا اختیاری ( مثلا یه باگ خفن دارید تو پروژه، باگو رفع میکنید، و نسخه جدیدو که انتشار میدید، این گزینه رو روی yes/true قرار میدید ) و پارامترهای دیگه که جاش تو این پست نی ذکر کنم؛ بعد پروژه کاربر درخواست به سرور که ارسال میکنه ( که توش نسخه پروژه کاربر هم ذکر شده )، کد سمت سرور بررسی میکنه که نرم افزار آبدیت هستش یا نه، اگه نبود، فایل xml / json رو براش ارسال میکنه. وسلام.
    3.3.5) SharpUpdate : خب این مثل همون مورد 3.3.4 هستش، برای این میزارمش فقط چون یه سری فیلم آموزش کامل و توضیح کداش تو یوتیوب هستش، لینک لیست پخش ویدئوهای فوق رو میزارم شاید بکار کسی اومد! ( حدود 11 تا کلیپ در کل حدود 70 دقیقه ) : C#‎‎‎‎‎ Auto Updater Library Tutorial
    3.4)
    یه سایت دیدم که نرم افزار درست کرده بود و برای فروش گزاشته بود مرتبط با این موضوع، هنوز کامل بررسیش نکردم ولی لینکشو فعلا میزارم تا یادم نره : wyBuild

    انتها : خودم بنظرم روش 3.1 ( یا کتابخونه آماده 3.3.4، که جفت روشا یکی هستش ) مناسب باشه، و بهترین روش باشه ( دلم میگه، مطمئن نیستم ) ولی آیا اون توقعات 1.1 و 1.2 و 1.3 و 1.4 رو میشه براورده کرد؟ یا این که نمیشه و به مشکل میخورم و اگه به مشکل میخورم چطور باید رفعش کرد یا از یه روشی باید استفاده کرد؟ خودتون برا این بحث بروزرسانی پروژه چیکار میکنید؟

    پیشاپیش ممنون بابت خودت این توضیحات طولانی و پاسخ هاتون
    آخرین ویرایش به وسیله md3848 : پنج شنبه 09 اردیبهشت 1400 در 08:47 صبح

تاپیک های مشابه

  1. پاسخ: 0
    آخرین پست: شنبه 31 فروردین 1398, 10:38 صبح
  2. پاسخ: 8
    آخرین پست: شنبه 08 اسفند 1394, 17:30 عصر
  3. پاسخ: 2
    آخرین پست: شنبه 12 اردیبهشت 1394, 15:40 عصر
  4. فیلم آموزشی بهینه سازی سایت آموزش SEO آموزش سئو
    نوشته شده توسط alii00114 در بخش آگهی‌ها
    پاسخ: 0
    آخرین پست: چهارشنبه 26 فروردین 1394, 23:42 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •