ویندوز پکیج منیجر (Winget) ابزار رسمی و خط‌فرمانی مایکروسافت برای مدیریت نرم‌افزارها در سیستم‌عامل ویندوز است. این ابزار به مهندسان شبکه، توسعه‌دهندگان و کاربران حرفه‌ای اجازه می‌دهد تا فرآیندهای نصب، به‌روزرسانی، حذف و پیکربندی اپلیکیشن‌ها را به صورت کاملا خودکار، بی‌صدا و مقیاس‌پذیر انجام دهند. Winget وابستگی به رابط کاربری گرافیکی را حذف کرده و با پشتیبانی از مخازن معتبر مانند Winget.rs و Microsoft Store، امنیت و پایداری چرخه عمر نرم‌افزار را تضمین می‌کند.

بخش اول: پیش‌نیازها و آماده‌سازی محیط

برای استفاده از Winget، سیستم شما باید شرایط زیر را داشته باشد:
ویندوز 10 نسخه 1709 یا بالاتر، یا ویندوز 11.
آپدیت App Installer از طریق مایکروسافت استور. این آپدیت هسته اصلی Winget را در اختیار شما قرار می‌دهد.
دسترسی ادمین (Administrator) برای اجرای دستورات نصب و تغییرات در سطح سیستم.
ویندوز ترمینال (Windows Terminal) با پیکربندی پیش‌فرض روی PowerShell یا Command Prompt.

بخش دوم: نصب و تایید نسخه Winget

در صورتی که App Installer به روز باشد، Winget به صورت پیش‌فرض در مسیر سیستم قرار دارد. برای تایید نصب و بررسی نسخه، ترمینال را با دسترسی ادمین باز کنید و دستور زیر را وارد کنید:

winget --version

خروجی باید شماره نسخه نصب شده را نشان دهد. در صورت دریافت خطا، باید اپلیکیشن App Installer را در مایکروسافت استور بروزرسانی کنید.

برای مشاهده جزئیات کامل پیکربندی و مخازن متصل به Winget از دستور زیر استفاده کنید:

winget --info

بخش سوم: سینتکس پایه و جستجوی حرفه‌ای اپلیکیشن‌ها

منطق فرمانی Winget بر اساس سه پارامتر اصلی عمل می‌کند: نام (Name)، شناسه (Id) و منبع (Source). استفاده از شناسه (Id) دقیق‌ترین روش برای جلوگیری از تداخل نرم‌افزارهای هم‌نام است.

جستجوی نرم‌افزار:
برای یافتن اپلیکیشن مورد نظر در مخازن، دستور search استفاده می‌شود.

winget search "Mozilla Firefox"

خروجی این دستور شامل ستون‌های Name، Id، Version و Source است. برای جستجوی محدود به یک منبع خاص می‌توانید پارامتر منبع را اضافه کنید:

winget search "Visual Studio Code" --source winget

مشاهده جزئیات بسته:
پیش از نصب، می‌توانید اطلاعات دقیق نرم‌افزار شامل سازنده، نسخه، لایسنس و آدرس دانلود را بررسی کنید:

winget show --id Mozilla.Firefox

بخش چهارم: استراتژی‌های نصب و پارامترهای پیشرفته

دستور اصلی نصب در Winget به شکل زیر است:

winget install --id Mozilla.Firefox

با این حال، در محیط‌های حرفه‌ای و خودکار، استفاده از پارامترهای تکمیلی الزامی است تا از توقف پروسه نصب جلوگیری شود.

پارامترهای حیاتی نصب:

--silent یا -h : اجرای نصب به صورت کاملا بی‌صدا. هیچ رابط کاربری یا پنجره‌ای به کاربر نمایش داده نمی‌شود.
--accept-package-agreements : تایید خودکار تمام توافق‌نامه‌های مجوز (EULA) در طول نصب.
--accept-source-agreements : تایید خودکار توافق‌نامه‌های منبع نرم‌افزار.
--location : تعیین مسیر دقیق نصب نرم‌افزار روی دیسک سخت.
--architecture : تحمیل معماری خاص برای نصب (مثلا x64، x86، arm64).
--override : تزریق سوییچ‌های اختصاصی به فایل نصب‌کننده اصلی (مثلا سوییچ‌های مخصوص MSI یا Inno Setup).

مثال کاربردی نصب حرفه‌ای:
نصب نرم‌افزار VS Code به صورت بی‌صدا، با تایید خودکار لایسنس‌ها و در مسیر درایو D:

winget install --id Microsoft.VisualStudioCode --silent --accept-package-agreements --accept-source-agreements --location "D:\Software\VSCode"

نصب نسخه خاص:
برای نصب یک نسخه مشخص از یک نرم‌افزار، پارامتر version استفاده می‌شود:

winget install --id Telegram.TelegramDesktop --version 4.8.1

بخش پنجم: مدیریت چرخه حیات نرم‌افزار (ارتقا و حذف)

قابلیت برتری Winget نسبت به بسیاری از پکیج منیجرهای سنتی، توانایی شناسایی نرم‌افزارهایی است که از طریق روش‌های دیگر (خارج از Winget) نصب شده‌اند.

ارتقای نرم‌افزار:
برای بررسی نرم‌افزارهای دارای آپدیت در سیستم:

winget upgrade

برای ارتقای یک اپلیکیشن خاص:

winget upgrade --id Google.Chrome

برای ارتقای همزمان تمامی نرم‌افزارهای قابل آپدیت در سیستم:

winget upgrade --all

حذف نرم‌افزار:
حذف نرم‌افزار نیز با شناسه یکتا انجام می‌شود. این دستور اپلیکیشن را از رجیستری و سیستم پاکسازی می‌کند:

winget uninstall --id Valve.Steam

بخش ششم: مدیریت مخازن (Sources)

Winget از مخازن مختلفی تغذیه می‌کند. دو مخزن پیش‌فرض winget (متعلق به جامعه GitHub) و msstore هستند. برای اطمینان از یکپارچگی داده‌ها، مخازن باید به طور دوره‌ای بروزرسانی شوند.

برای مشاهده مخازن فعال:

winget source list

برای بروزرسانی متادیتای مخازن (در صورت دریافت خطای عدم یافتن نرم‌افزار جدید):

winget source reset --force

در صورت نیاز به اضافه کردن مخزن اختصاصی سازمانی (مثلا نگهداری نرم‌افزارهای درون‌سازمانی):

winget source add --name MyCompanyRepo --arg "https://mycompany.com/winget-feed"

بخش هفتم: صادر و وارد کردن تنظیمات (ایده‌آل برای Sysprep و توزیع انبوه)

یکی از قدرتمندترین ویژگی‌های Winget برای مهندسان زیرساخت، قابلیت خروجی گرفتن از لیست نرم‌افزارهای نصب شده و نصب دسته‌جمعی آن‌ها در سیستم‌های جدید است.

خروجی گرفتن از لیست نرم‌افزارها:
این دستور یک فایل JSON با تمام شناسه‌ها و نسخه‌های نرم‌افزارهای فعلی ایجاد می‌کند:

winget export -o D:\Backup\installed-apps.json

وارد کردن و نصب دسته‌جمعی:
در یک سیستم جدید، با اجرای دستور زیر تمام نرم‌افزارهای ثبت شده در فایل JSON به صورت خودکار و بی‌صدا نصب می‌شوند:

winget import -i D:\Backup\installed-apps.json --accept-package-agreements --accept-source-agreements

بخش هشتم: عیب‌یابی و رفع مشکلات رایج

عدد پایانی در هر خط دستور Winget یک کد خروج (Exit Code) است. عدد صفر به معنای موفقیت است.

خطای Hash Mismatch:
گاهی اوقات فایل نصب از طرف توسعه‌دهنده تغییر می‌کند اما متادیتای Winget بروز نشده است. در این حالت خطای هش نامعتبر دریافت می‌کنید. برای دور زدن موقت این خطا (با ریسک شخصی) از سوییچ زیر استفاده کنید:

winget install --id App.Id --ignore-security-hash

خطای No App Found:
اگر جستجو نتیجه‌ای نداشت، ابتدا مخازن را بروزرسانی کنید. اگر شناسه دارای فاصله است، حتما آن را داخل کوتیشن قرار دهید یا مستقیما از آیدی دقیق استفاده کنید.

خطای Policy Restriction:
در سیستم‌های تحت دامین، ممکن است Group Policy اجرای App Installer را محدود کرده باشد. باید از ادمین شبکه درخواست باز کردن پالیسی AppInstaller را داشت.

نتیجه‌گیری:
استفاده از Winget رویکرد سیستماتیک و دنباله‌دار را به فرآیند مدیریت نرم‌افزار در ویندوز اعمال می‌کند. با بهره‌گیری از اسکریپت‌نویسی مبتنی بر Winget، سازمان‌ها می‌توانند زمان استقرار سیستم‌ها (Deployment) را تا حد قابل توجهی کاهش داده، انسانی‌سازی فرآیندها را حذف کرده و پایداری محیط‌های کاری را در سطح بالایی تضمین کنند.