نگاهی به توسعه و بهبود HandyWinget

بلاخره بعد از 4 ماه یه فرصت پیدا کردم تا دوباره بتونم اینجا از کارام بنویسم.چند ماه پیش که مایکروسافت Winget رو منتشر کرد من هم بلافاصله یه رابط کاربری براش زدم تا افرادی که با Cli اشنایی ندارن راحت تر بتونن با این پلتفرم ارتباط برقرار کنن. (قبلا اینجا راجبش نوشتم) راستش اون موقع فکر نمیکردم که این برنامه جا بیوفته و طرفدار پیدا بکنه واسه همین اخیرا تصمیم گرفتم تا یه دستی رو سرش بکشم و بهترش کنم.انگلیسی ها و المانی ها کاربران وفادار❤اینجا میخایم نسخه جدید برنامه رو با هم یه بررسی بکنیم و ببینیم که چطور میتونیم رابط کاربری رو بهتر بکنیم و تجربه بهتری رو برای کاربر ایجاد کنیم.اول ببینیم که نسخه اول چطوری کار میکنه!خب خیلی سادست من به کمک Process دستورات مربوط به دانلود پکیج هارو به cmd میفرستم و cmd پاسخ اون دستور رو به من برمیگردونه و من با خوندن خط به خط اون ها به کاربر گزارش میدم که در چه مرحله ای هستش.این تصویر نسخه اول هستشحالا بریم سراغ نسخه دوم?اولین کاری که کردم یه رابط کاربری استاندارد تر و بهینه تری رو برای برنامه ایجاد کردم. خودم که خیلی حال کردم? (البته بماند که همین منوی ناوبری دهنمو سرویس کرد مجبور شدم کتابخونه رو مجددا پورتش کنم و وابستگی WinRT رو حذفش کنم?)دومین کاری که کردم این بود که نسخه اول بدلیل اینکه با winget در ارتباطه امکان استفاده روی نسخه های قبلی ویندوز رو نداره چون winget روی رنج خاصی از ویندوز 10 نصب میشه و امکان نصب روی نسخه های قدیمی تر رو نداره! پس من تصمیم گرفتم که توی نسخه 2 وابستگی به winget رو حذف کنم تا بتونیم از پکیج منیجر روی نسخه های قدیمی تر ویندوز هم استفاده کنیم کافی بود بجای اینکه دستور دانلود رو به winget ارسال کنم، خودم اون فایل رو دانلود کنم. البته همچنان امکان دانلود با winget موجودهکاربر امکان انتخاب حالت دانلود و نصب برنامه ها را دارد (داخلی/وینگت)سومین کار این بود که نحوه دریافت مانیفست هارو تغییر بدم. نسخه 1 از یه کتابخونه به اسم libgit2sharp استفاده میکرد تا بتونه Repo مربوط به مانیفست هارو از گیتهاب دریافت کنه. متاسفانه این کتابخونه به فایل pdb وابسته بود و امکان حذف این فایل نبود به طوری که اگه حذف میکردم برنامه اجرا نمیشد. از طرفی هم حدود 8 مگ حجم داشت و امکان Embed کردن داخل exe رو هم نداشت. پس تصمیم گرفتم این کتابخونه رو حذف کنم و خودم بیام مخزن مانیفست رو دانلود کنم. نتیجه خیلی بهتر شد و حالا میتونم به کاربر درصد پیشرفت دانلود رو نشون بدم. نسخه 2.1 که در حال توسعه هستش امکان نمایش حجم دانلود شده از حجم کلی رو هم نشون میدهچهارمین کار این بود که بیام لیست برنامه های نصب شده رو نشون بدم. نسخه اول این کارو انجام میداد ولی توانایی شناسایی همه برنامه های نصب شده رو نداشت. این کار به کمک کلیدهای رجیستری انجام میشه و برنامه با اسکن کردن رجیستری برنامه های نصب شده رو شناسایی میکنه. تو نسخه 2 این مورد رو بهبود دادم و حالا برنامه میتونه موارد بیشتری رو تشخیص بده اگه بگیم نسخه اول 60 درصد برنامه هارو شناسایی میکنه باید بگم که نسخه دوم 99 درصد برنامه هارو شناسایی میکنه. خود winget هم امکان شناسایی برنامه های نصب شده رو در اخرین نسخه منتشر شده بصورت آزمایشی اضافه کرده ولی خب کمی کنده و همه برنامه هارو شناسایی نمیکنه (واقعا نمیدونم اون برنامه نویس های مایکروسافت دقیقا چه غلطی میکنن?) از طرفی چون برنامه من قراره روی نسخه های قدیمی ویندوز هم اجرا بشه پس نباید به winget وابستگی داشته باشه واسه همین نیاز بود که این مورد رو حتما بهبود بدم گرچه همین ویژگی مایکروسافت رو هم به برنامه اضافه کردم که کاربر میتونه نحوه شناسایی برنامه هارو انتخاب کنه.باقی موارد رو از دید گیف ببینیم ?نمایش مشخصات پکیج امکان نصب نسخه های مختلفامکان نصب چندین برنامه بصورت همزمانامکان خروجی گرفتن اسکریپت نصب پکیج ها با فرمت پاورشلبهبود گزارش فعالیت های برنامه بهبود گزارش فعالیت های برنامهامکان گروه بندی بر اساس ناشردر پایان اینکه نسخه جدید خیلی خیلی از نسخه اول سریعتر،بهتر و ویژگی های بهتری رو داره.بیشتر این ویژگی ها توسط winget هنوز پشتیبانی نمیشه و برنامه ای براش ندارن مثل امکان نصب چندین برنامه پشت سرهم بدون اینکه شما کار اضافه ای بکنید فقط انتخاب کنید و بوم!همینطور که توی گیف دیدید برنامه این امکان رو میده که شما پکیج های موردنظرتون رو انتخاب کنید و اسکریپت پاورشل نصب اون رو بصورت خروجی دریافت کنید شما میتونید این پاورشل رو روی هر سیستمی که خواستید اجرا کنید و پکیج های انتخابیتون رو نصب کنید.واقعا ویژگی خفنی هستش و برای کسایی که برنامه های زیادی رو نصب میکنن کاربردی! الان که این متن رو نوشتم به ذهنم رسید که امکان Execute کردن پکیج های پاورشل رو به برنامه اضافه کنم قطعا چیز خفنی میشه? در پایان اینکه handywinget با اختلاف زیادی از تمامی نمونه های مشابه یه سرو گردن بالاتره و ویژگی های بهتری رو به کاربر ارائه میده.?خوش باشید/HandyOrg/HandyWinGet: GUI for installing apps through WinGet and Creating Yaml file (github.com)