إذا اضطررت لقضاء ساعات في كل مرة تحصل فيها على معدات جديدة تثبيت البرامج، وتعديل إعدادات نظام التشغيل ويندوز، وإعداد بيئة التطوير الخاصة بكحان وقت التبسيط. تتيح لك ملفات WinGet وYAML تحويل تلك العملية المرهقة إلى عملية تلقائية تقريبًا يمكنك تكرارها على أي جهاز كمبيوتر بأمر واحد.
الفكرة هي وصف ما تريد تثبيته وكيفية تهيئة نظامك في ملف التكوين، ثم تركه يقوم بذلك. مدير حزم ويندوز (winget) بالإضافة إلى تكوين الحالة المطلوبة لـ PowerShell (DSC) قم بالعمل الشاق: قم بتثبيت البرامج، وتطبيق الإعدادات، وتشغيل البرامج النصية، والتأكد من أن جهازك في الحالة المناسبة تمامًا لكي تتمكن من العمل دون إضاعة الوقت.
ما هو برنامج WinGet ولماذا هو مفيد جدًا لأتمتة جهاز الكمبيوتر الخاص بك؟
WinGet هو مدير الحزم الرسمي من مايكروسوفت لنظامي التشغيل ويندوز 10 وويندوز 11يعمل من خلال سطر الأوامر ويسمح لك بتثبيت التطبيقات وتحديثها وتكوينها وإلغاء تثبيتها بطريقة مشابهة جدًا لما يتم في GNU/Linux باستخدام apt أو dnf أو ما شابه، ولكنه متكامل تمامًا مع نظام Windows البيئي.
بدلاً من البحث عن برامج التثبيت على مئات المواقع الإلكترونية، وتنزيل ملفات EXE أو MSI، والنقر على "التالي، التالي، موافق"، يمكنك باستخدام WinGet تشغيل أمر مثل تثبيت حزمة winget-name ثم يقوم النظام بتنزيل البرنامج من مصدر موثوق، وينفذ عملية التثبيت الصامتة، ويسجل الحزمة للحصول على التحديثات المستقبلية.
المصادر الرئيسية للبرامج التي يستخدمها WinGet هي متجر مايكروسوفت ومستودع المجتمع المستضاف على GitHubحيث يتم وصف كل تطبيق بواسطة بيان YAML يشير إلى كيفية تثبيته، وإصداره، وتجزئة التكامل، وما إلى ذلك. بالإضافة إلى ذلك، من الممكن إضافة مستودعات خاصة، مثل مستودع خاص بمؤسستك، لتوزيع البرامج الداخلية بطريقة محكمة.
يعتمد نظام WinGet البيئي بأكمله على ثلاثة أركان:
- La CLI winget (الأمر الذي تستخدمه في الطرفية).
- الكثير الخدمات التي تستضيف وتتحقق من صحة الحزم.
- الكثير ملفات تكوين YAML التي تسمح لك بتحديد الحالة المطلوبة للجهاز بأكمله بشكل تصريحي، وليس فقط التطبيقات الفردية.
أوامر WinGet الأساسية لإدارة التطبيقات
قبل أن نخوض في الجوانب التقنية لملفات تكوين YAML، من المفيد فهم الأساسيات. أوامر WinGet الأساسية للاستخدام اليوميتتم إدارة كل شيء من خلال PowerShell أو Windows Terminal أو موجه الأوامر الكلاسيكي.
إذا كتبت ببساطة الجناح في نافذة الأوامر، ستجد الإصدار المُثبّت، والأوامر الفرعية المتاحة، وملخصًا للخيارات. ومن هناك، يمكنك البدء بالتجربة دون خوف.
إلى تثبيت التطبيق تستخدم الأمر الفرعي install. على سبيل المثال، لتثبيت Visual Studio Code على جهاز الكمبيوتر الخاص بك، ما عليك سوى القيام بما يلي:
winget install Microsoft.VisualStudioCode
في هذه الحالة، Microsoft.VisualStudioCode هو المعرّف الدقيق للحزمة في مستودع WinGet. في كثير من الحالات، يمكنك أيضًا التثبيت باستخدام الاسم كما يظهر تمامًا في المتجر، بين علامتي اقتباس إذا كان يحتوي على مسافات، ولكن استخدام المعرّف يقلل من الغموض.
إذا كنت تريد قم بتحديث برامجكيمكنك أن تطلب من برنامج WinGet محاولة تحميل كل ما يتعرف عليه باستخدام:
winget upgrade --all
أو يمكنك التركيز على تطبيق معين، على سبيل المثال:
winget upgrade Microsoft.VisualStudioCode
تستطيع الإصدارات الحديثة من WinGet تحديث ليس فقط ما قامت بتثبيته بنفسها، ولكن أيضًا التطبيقات التي تكتشفها على النظام والتي تحتوي على بيان مرتبط بها في أصولها.
إلى برنامج إلغاء التثبيتالآلية بسيطة بنفس القدر:
winget uninstall Microsoft.VisualStudioCode
ستنجح عملية الإزالة طالما أن برنامج WinGet لديه البرنامج مُدرجًا في فهرسه، إما لأنه قام بتثبيته أو لأنه يتعرف عليه من خلال المعلومات المسجلة في النظام.
عندما تحتاج إلى تحديد موقع برنامج، يمكنك استخدام بحث Wingetعلى سبيل المثال، لمعرفة خيارات المفكرة المتاحة:
winget search notepad
سيعيد الأمر قائمة تحتوي على الاسم، ومعرف الحزمة، والمنشأ (مستودع المجتمع، أو المتجر، أو المستودع الخاص)، وهذا المعرف هو الذي يجب عليك استخدامه في التثبيت أو الترقية لتكون في الجانب الآمن.
إذا كنت ترغب في معرفة البرنامج الذي يتحكم في WinGet على جهاز الكمبيوتر الخاص بك، يمكنك استخدام ما يلي:
winget list
ستحصل بذلك على قائمة التطبيقات التي اكتشفها مدير الحزم. مفيد جدًا لتحديد ما يجب تحديثه أو ما يجب تضمينه في ملفات التكوين الخاصة بك.
أتمتة عمليات التثبيت باستخدام ملفات YAML: روعة الأمر برمته
الجزء المثير للاهتمام حقاً هو عندما تنتقل من كتابة الأوامر واحداً تلو الآخر إلى صف بيئتك المثالية في ملف YAML واحدبدلاً من وجود قائمة أوامر مختصرة أو نص برمجي هش، يمكنك تحديد كيفية ظهور الجهاز بشكل تصريحي وتفويض العمل إلى WinGet و DSC.
يحتوي ملف تكوين WinGet على قائمة الحزم والإصدارات والأدوات والبرامج النصية وإعدادات النظام الذي تحتاجه لبيئة التطوير الخاصة بك (أو للشركة بأكملها). لا يقتصر الأمر على تثبيت البرامج فحسب، بل يمكنه تفعيل ميزات ويندوز، وتعديل سجل النظام، وإدارة الخدمات، وتشغيل برامج PowerShell النصية... كل ما يلزم لوضع جهاز الكمبيوتر في حالة معينة.
لكي ينجح هذا، يجب أن يكون لديك إصدار حديث بما فيه الكفاية من WinGet، وتحديداً الإصدار 1.6.2631 أو أعلىهذا هو الوقت الذي يتم فيه إدخال التكامل مع DSC 3.0 وأمر winget configure، المسؤول عن معالجة ملفات تكوين YAML، بطريقة مستقرة.
الميزة هي أن العملية تصبح غير مراقب وقابل للتكرارتُنفّذ الأمر، وتوافق على الاتفاقيات اللازمة، ويمكنك الذهاب لتناول فنجان قهوة بينما يقوم النظام بتثبيت كل ما هو مطلوب، وضبط نظام ويندوز، وتكوين بيئات التطوير المتكاملة، وتجهيز بيئة العمل. وإذا غيّرت جهاز الكمبيوتر غدًا، فما عليك سوى تكرار العملية وستكون جاهزًا للانطلاق.
علاوة على ذلك، يمكن لهذه الملفات احفظه في مستودع Git أو OneDrive أو أي مكان تريده، شارك مع فريقك تغييرات الإصدار والمشاكل المفتوحة وطلبات السحب ... باختصار، تعامل مع تكوين جهازك على أنه كود (IaC) وليس كشيء يدوي وغير قابل للتكرار.
أمر تهيئة Winget وخياراته الرئيسية
إن بوابة النظام التصريحي بأكمله هي الأمر winget configure. هذا البرنامج مسؤول عن قراءة ملف تكوين WinGet الخاص بك، والتحقق من صحته، وتنزيل وحدات PowerShell اللازمة، وتطبيق التغييرات.
قبل الخوض في التفاصيل، يُنصح تمكين مكونات التكوين (إذا لم يكونوا نشطين بالفعل) مع:
winget configure --enable
بعد ذلك، فإنّ أفضل ما يمكن فعله هو البدء بالتحقق من صحة ملف YAML باستخدام الأمر التالي:
winget configure validate -f ruta\a\archivo.winget
تتحقق عملية التحقق من صحة كل من صيغة YAML كتوافق مع مخطط JSON التكوين الرسمي. ضع في اعتبارك أن YAML حساس للمسافات البادئة (المسافات، وليس علامات الجدولة)، لذا فإن تعديل هذه الملفات في Visual Studio Code باستخدام ملحق Red Hat YAML ومخطط WinGet المرتبط به أمر ضروري تقريبًا لتجنب حدوث مشاكل.
عندما يبدو كل شيء على ما يرام، يمكنك طبّق الإعدادات بجدية مع:
winget configure --file ruta\a\archivo.winget --accept-configuration-agreements
عند هذه النقطة، يبدأ معالج التكوين عمله، حيث يقوم بتفسير ملف YAML، وتنزيل أي وحدات DSC مفقودة من معرض PowerShell، ثم يبدأ بتنفيذ التأكيدات والموارد. تُنفذ المهام التي تسمح بذلك بالتوازي. أما المهام التي تتطلب ذلك فتُنفذ بالتوازي. امتيازات المسؤول سيؤدي ذلك إلى ظهور تحذير من نظام التحكم في المستخدم (UAC) عند الإطلاق بسبب الارتفاع.
إذا كنت تفضل إجراء "اختبار تجريبي" قبل تغيير أي شيء، يمكنك استخدام ما يلي:
winget configure test -f ruta\a\archivo.winget --accept-configuration-agreements
باستخدام الاختبار، يقوم WinGet بتقييم النظام من خلال مقارنته بالحالة المطلوبة الموضحة في الملف و إنه يوضح لك ما هي الأمور التي لا تتوافق.دون الحاجة حتى إلى لمس الجهاز. هذا مفيد للغاية لضبط الإعدادات المعقدة وضمان عدم وجود أي مفاجآت عند تطبيق الملف.
من الممكن أيضاً العمل مع الملفات البعيدة، على سبيل المثال تلك الموجودة في مستودع عام أو خاص، عن طريق تشغيل أمر مثل:
winget configure --accept-configuration-agreements --disable-interactivity -f https://tu-servidor/tu-config.winget
تتناسب طريقة الاستخدام هذه بشكل جيد للغاية في سيناريوهات النشر الجماعي أو الإدارة المركزيةحيث تقوم إدارة تقنية المعلومات بنشر التكوين، ولا يتعين على المستخدمين أو البرامج النصية سوى تشغيل أمر واحد لمغادرة جهاز الكمبيوتر الخاص بالشركة وفقًا للمعايير المحددة.
الوسائط والخيارات والأوامر الفرعية لتكوين winget
يدعم الأمر الفرعي configure عددًا من معايير لضبط السلوك بدقةومن بين أكثرها أهمية:
- -f، –file. مسار ملف تكوين WinGet المراد تطبيقه.
- –مسار الوحدة. المجلد المحلي حيث سيتم تخزين وحدات DSC التي تم تنزيلها (افتراضيًا في %LOCALAPPDATA%\Microsoft\WinGet\Configuration\Modules).
- –مسار المعالج. موقع معالج التكوين المخصص، إن وجد.
- –قبول اتفاقيات التكوين. اقبل تحذير التكوين مسبقًا لتجنب الإشعار التفاعلي.
- –suppress-initial-details. حاول إخفاء تفاصيل الإعداد الأولي للحصول على مخرجات أنظف.
- – تفعيل / – تعطيل. تفعيل أو تعطيل مكونات التكوين (يتطلب الوصول إلى المتجر).
- –logs, –open-logs. افتح المجلد الذي تُخزَّن فيه سجلات التكوين.
- –verbose, –verbose-logs. يُمكّن من تسجيل البيانات بالتفصيل لأغراض استكشاف الأخطاء وإصلاحها.
- –nowarn, –ignore-warnings. قم بإخفاء رسائل التحذير عند الخروج.
- –disable-interactivity. يمنع هذا أي نوع من أنواع المطالبات التفاعلية، وهو مثالي للبرامج النصية التي تعمل بدون مراقبة.
- –proxy / –no-proxy. يتيح لك ذلك تحديد وكيل لهذا التنفيذ المحدد أو تعطيل استخدام الوكيل.
بالإضافة إلى الأمر الرئيسي، يحتوي الأمر winget configure على عدة أوامر فرعية ما يستحق المعرفة:
- winget configure show -f . يعرض تفاصيل ملف تكوين معين، وهو أمر مفيد لفحصه دون فتحه في محرر نصوص.
- قائمة تكوين winget. يعرض ملخصًا للتكوينات التي تم تطبيقها على النظام، مما يساعد على تتبع ما تم تشغيله.
- اختبار تكوين winget -f . وضع التحقق الذي يقارن الحالة الحالية للنظام مع الحالة المحددة في التكوين.
- winget configure validate -f . تحقق من صحة الملف فقط، دون لمس الجهاز.
- winget configure export -o . يُتيح ذلك تصدير موارد التكوين إلى ملف، سواء كانت جميع تكوينات الحزمة (
--all), حزمة محددة (--package-id) أو مورد محدد (--moduley--resource)، وإلحاقها بملف الإخراج إذا كان موجودًا بالفعل.
تنسيق ملف تكوين WinGet واتفاقية التسمية
تستخدم ملفات تكوين WinGet تنسيق YAML مع مخطط JSON مرتبط به وهو ما يحدد البنية الصحيحة. يعتمد نظام البيان الخاص بـ WinGet أيضًا على YAML. لذا، فإن كل شيء يندرج ضمن النموذج نفسه.
بحسب المتعارف عليه، يتم حفظ هذه الملفات بالامتداد .wingetعلى سبيل المثال configuration.wingetفي المشاريع التي تستخدم Git، يوصى عمومًا بتخزينها في دليل مخفي. .configطرق المغادرة مثل ./.config/configuration.winget بالنسبة للتكوين "الافتراضي" للمشروع.
إذا كان مشروعك يستخدم مجموعات مختلفة من الأدوات أو الإعدادات، فيمكنك الاحتفاظ بعدة ملفات تكوين في نفس المجلد، كل منها باسم وصفي يشير إلى البيئة التي يستخدمها (على سبيل المثال، frontend.winget، backend.winget، وما إلى ذلك).
عادةً ما يكون السطر الأول من الملف عبارة عن تعليق خاص لإعلام المحررين بنوع مخطط JSON الذي يجب استخدامه. وعادةً ما يكون شكله كالتالي:
# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2
في الاتجاه الأساسي https://aka.ms/configuration-dsc-schema/ يمكنك التحقق من أحدث إصدار للمخطط وتحديث ملفك عندما تصدر مايكروسوفت مراجعات جديدة بمزيد من الإمكانيات.
بعد هذا العنوان، تكون العقدة الجذرية للمستند دائمًا HASوالذي يجب أن يتضمن حقلاً configurationVersion (على سبيل المثال 0.2.0) والقسمان الرئيسيان اللذان ينظمان كل شيء: assertions y resources.
بنية ملف التكوين: الخصائص، والتأكيدات، والموارد
تحت العقدة HAS من جهة، يُعلن أن إصدار التكوينوالتي ينبغي زيادتها مع تطور الملف، ومن ناحية أخرى المجموعات assertions y resources التي تصف السلوك.
- قسم تأكيدات. يشمل ذلك التأكيدات أو الشروط المسبقة التي يجب استيفاؤها لكي تكون موارد معينة ذات معنى: الحد الأدنى لإصدار ويندوز، ووجود ميزة معينة، وما إلى ذلك. إنها ليست إجراءات في حد ذاتها، بل هي عمليات فحص للبيئة.
- قسم موارد. يجمع هذا النظام جميع موارد التكوين التي تنوي تطبيقها: تثبيتات البرامج، وإعدادات النظام، والبرامج النصية، وإدارة الخدمات، وتغييرات سجل النظام، وما إلى ذلك. ويتم تمثيل كل عنصر في هذه القوائم بعقدة من نوع
resourceمع المعلومات اللازمة.
في كلتا الحالتين ، يتم تعريف كل إدخال من خلال تحديد مورد DSC المراد استخدامه، بالصيغة {NombreModulo}/{NombreRecursoDSC}. على سبيل المثال ، Microsoft.Windows.Settings/WindowsSettings للوصول إلى إعدادات ويندوز، أو Microsoft.WinGet.DSC/WinGetPackage لتثبيت حزمة WinGet من DSC.
إلى جانب مجال الموارد، تتضمن كل وحدة عادةً أقسامًا من التوجيهات والإعدادات، مُعرِّف اختياري id وعند الضرورة، قائمة بالتبعيات dependsOn إلى مصادر أو تأكيدات أخرى.
التأكيدات: تحقق من إصدار نظام التشغيل Windows والمتطلبات الأساسية الأخرى
ال تعمل التأكيدات كمرشحات أولية تُحدد هذه الإعدادات ما إذا كان من المنطقي تشغيل موارد معينة على الجهاز الحالي. وبهذه الطريقة، لن تحاول تثبيت أو تهيئة أي شيء على نظام لا يفي بالمتطلبات الأساسية.
ومن الأمثلة النموذجية على ذلك التحقق من الحد الأدنى لإصدار نظام التشغيلتتطلب العديد من التكوينات على الأقل نظام التشغيل Windows 10 1809 أو إصدارًا محددًا من Windows 11، ومن غير المجدي المتابعة إذا كنت تستخدم إصدارًا أقدم لا يدعم WinGet.
يستخدم هذا النمط من التأكيد موارد DSC مثل Microsoft.Windows.Developer/OsVersion، مما يشير إلى خاصية عبر الإعدادات الإصدار المصغر (على سبيل المثال '10.0.22000') الذي يحدد الحد الأدنى المقبول للتكوين.
يمكن أن تكون التأكيدات التقييم بالتوازيبدون ترتيب محدد، وتُرجع بشكل أساسي حالة صحيحة أو خاطئة. إذا كانت نتيجة التأكيد خاطئة (أي لم يتم استيفاؤها)، فإن أي مورد يتضمنه كاعتمادية من خلال dependsOn سيتم حذفه تلقائياً.
يُعتبر هذا السلوك نتيجةً صحيحةً من منظور النظام التصريحي: فمن الأفضل تخطي كتلة برمجية غير منطقية بدلاً من فرض تنفيذها في بيئة غير مناسبة. قد تُظهر رسائل الإخراج شيئًا مثل: "لم يتم تنفيذ مورد ما لأن أحد التأكيدات فشل أو كان خاطئًا".
حتى لو لم تنطبق بعض الإعدادات، سيظل برنامج WinGet يحاول تطبيقها. استمر في استخدام مصادر مستقلة أخرى لتقريب النظام قدر الإمكان من الحالة المطلوبة. في النهاية، تقع على عاتقك مسؤولية مراجعة الأخطاء واتخاذ القرار بشأن تغيير الإعدادات أو البيئة.
الموارد: تثبيت الحزم، وتعديل إعدادات نظام التشغيل ويندوز، وتشغيل البرامج النصية
قسم تُعد الموارد هي الجزء العملي الأساسي لملف التكوينهنا يمكنك سرد كل ما تريد أن يحدث على الجهاز: تثبيت البرامج، وتغييرات تكوين النظام، وتشغيل برامج PowerShell النصية، وإدارة الخدمات، وما إلى ذلك.
يتم تعريف كل مورد بحقل resource الذي يتبع الشكل Modulo/RecursoDSCعلى سبيل المثال Microsoft.Windows.Settings/WindowsSettings لتفعيل وظائف النظام، أو Microsoft.WinGet.DSC/WinGetPackage لتنسيق تثبيت حزمة عبر WinGet من DSC.
يمكنك، إن شئت، تعيين معرف فريد مما سيساعدك على الرجوع إليه من dependsOn في مصادر أخرى. وهذا مفيد للغاية عندما تريد، على سبيل المثال، أن يعتمد تكوين مكونات Visual Studio الإضافية بشكل صريح على تثبيت Visual Studio نفسه مسبقًا.
ضمن كل مورد، القسم تحتوي التوجيهات على معلومات سياقية حول كيفية تنفيذها: وصف نصي للمهمة (description) إذا تم قبول وحدات المعاينة من معرض PowerShell (allowPrerelease) و securityContext وهذا يشير إلى ما إذا كان التنفيذ يتطلب امتيازات إضافية.
Cuando pones سياق الأمان: مرتفعسيطلب برنامج WinGet أذونات المسؤول مرة واحدة عند بدء التثبيت، ومن ثم سيتمكن من تشغيل الموارد المرتفعة وغير المرتفعة باستخدام عمليات مختلفة، دون إغراقك بنوافذ التحكم في حساب المستخدم (UAC) بشكل متكرر.
قسم تحدد الإعدادات أزواج الاسم والقيمة والتي يتم تمريرها إلى مورد DSC. يمكن أن يكون الأمر بسيطًا مثل DeveloperMode: true لتفعيل وضع مطوري ويندوز، أو معلمات أكثر تعقيدًا مثل id y source من حزمة WinGet، مسار ملف .vsconfig، قيمة تسجيل معينة، أو تفاصيل خدمة تحتاج إلى التمكين.
وأخيرًا، الميدان يعتمد على يُتيح لك هذا تحديد أن هذا المورد يجب تنفيذه فقط عند اكتمال عمليات تأكيد أو موارد سابقة بنجاح. في حال فشل أحد هذه المتطلبات، يتم وضع علامة "لم يتم التنفيذ" أو "فشل" على المورد تلقائيًا، مما يمنع حدوث آثار جانبية غير مرغوب فيها.
قم بتنظيم قسم الموارد بطريقة سهلة القراءة
في المشاريع الكبيرة، يمكن أن تصبح ملفات التكوين كبيرة جدًا، لذا يجدر تخصيص بعض الوقت للقيام بذلك. فكّر قليلاً في كيفية تنظيم قسم الموارد بحيث يظل قابلاً للصيانة مع مرور الوقت.
تتمثل إحدى الاستراتيجيات الشائعة في تنظيم الموارد وفقًا لـ الترتيب المنطقي للتنفيذ:
- أولاً، ما الذي يقوم النظام بإعداده (التأكيدات، التحديثات الأساسية).
- ثم الأدوات العامة (المتصفحات، برامج الضغط، الأدوات المساعدة).
- ثم بيئة التطوير المتكاملة (IDE) ومجموعة تطوير البرامج (SDK).
- وأخيرًا، نصوص برمجية أو إعدادات أكثر تحديدًا.
ثمة نهج آخر مثير للاهتمام وهو تجميعها حسب احتمالية الفشل أو التعقيدبمعنى آخر، ضع المهام التي تتعطل في أغلب الأحيان (التثبيتات الثقيلة التي تعتمد على اتصال جيد أو بيانات اعتماد) في البداية، حتى يدرك المستخدم مبكراً أن هناك خطأ ما دون انتظار انتهاء كل شيء.
يفضل الكثيرون التجميع حسب نوع الموردأولاً، حزمة WinGet، ثم إعدادات نظام التشغيل Windows (السجل، والميزات، والخدمات)، ثم البرامج النصية، وأخيراً الأدوات الخاصة بمشروع معين. يشبه هذا الأسلوب غالباً البنية النموذجية لمشروع برمجي، ويساعدك على فهم الأمور بسرعة.
بغض النظر عن المعايير، يُنصح بشدة بإرفاق الملف بـ ملف README موجود في المستودع شرح بنية التكوين، والتبعيات الرئيسية، والحد الأدنى من إصدارات ويندوز المطلوبة، وخطوات التنفيذ الموصى بها.
تُتيح هذه الوثائق إمكانية بإمكان المطورين الآخرين المساهمة في الأرشيف بمخاطر أقل. لكسر شيء ما، لأنهم يفهمون بشكل أفضل ما يفعله كل جزء وما هي التأكيدات أو الاعتمادات التي يتم تطبيقها قبل إضافة مورد جديد.
استخدام المتغير ${WinGetConfigRoot} في مسارات الملفات
تقبل العديد من موارد DSC معلمات تتوقع مسارات إلى ملفات محددةإعدادات Visual Studio، والبرامج النصية، والقوالب، وما إلى ذلك. إذا كنت تستخدم مسارات مطلقة، فإن ملفك يفقد إمكانية نقله بمجرد تغيير المستخدمين أو محركات الأقراص أو المجلدات.
ولمنع ذلك، يُدخل WinGet المتغير ${WinGetConfigRoot}، والذي يشير إلى الدليل الذي تقوم بتشغيله winget configureومن هناك يمكنك إنشاء مسارات نسبية ستعمل بنفس الطريقة على أي جهاز كمبيوتر يتم فيه احترام نفس بنية المجلد.
على سبيل المثال، إذا قمت بحفظ ملف التكوين في .config/configuration.winget والملف .vsconfig في جذر المستودع، يمكنك استخدام مسار مثل '${WinGetConfigRoot}\..\.vsconfig'الجزء .. انتقل إلى مستوى أعلى واحد من مجلد العمل وسينقلك مباشرة إلى الدليل الذي يوجد فيه ملف .vsconfig.
هذه التقنية تجعل من الممكن ينطبق نفس التكوين على جميع أعضاء الفريق التي تقوم باستنساخ المشروع إلى مسارات مختلفة، طالما أنها تحترم الموضع النسبي للملفات داخل المستودع.
مع ذلك، يجدر التذكير في ملف README بما يلي: يجب على المستخدم التأكد من وجود الملف المستهدف. في المسار النسبي الذي يتوقع التكوين قبل تشغيل winget configure، وإلا فإن التنفيذ سيشير إلى وجود أخطاء في تلك الموارد.
أين تجد وحدات DSC والموارد الجاهزة للاستخدام
لكي يعمل هذا النظام بأكمله، يعتمد WinGet على وحدات PowerShell التي تُنفذ موارد DSCبعضها يأتي "افتراضيًا" مع النظام نفسه (ما يسمى بموارد صندوق الوارد) والبعض الآخر يتم الحصول عليه من معرض PowerShell.
من بين الموارد القياسية لديك وحدات لإدارتها متغيرات البيئة، تثبيت أو إلغاء تثبيت حزم MSI (msiPackage)، ومعالجة مفاتيح وقيم التسجيل (Registry)، وتشغيل كتل البرامج النصية (Script)، والتحكم في خدمات Windows (Service)، وإضافة أو إزالة الأدوار والميزات (WindowsFeature)، أو بدء وإيقاف العمليات (WindowsProcess).
La يضم معرض PowerShell مئات الوحدات النمطية الإضافية باستخدام موارد DSC التي ساهم بها المجتمع. يمكنك استخدام فلاتر البحث لعرض الموارد المصنفة على أنها "موارد DSC" فقط، وبالتالي تحديد الأجزاء القابلة لإعادة الاستخدام في تكويناتك.
ومع ذلك، من المهم أن نضع في اعتبارنا أن المعرض ليس بيئة خاضعة للتدقيق الكامل: بإمكان أي شخص نشر وحدات برمجيةوقد تتضمن بعضها نصوصًا برمجية محفوفة بالمخاطر أو خبيثة تمامًا إذا لم تتم مراجعتها بعناية.
ولهذا السبب، تصر مايكروسوفت على أن أصل ومحتوى الوحدات قبل استخدامها في التكوينات التي ستعمل على أجهزة الإنتاج، خاصة إذا كانت تلك الموارد تعمل في سياق أمان عالٍ.
للاطلاع على أمثلة عملية لملفات التكوين، تحتفظ مايكروسوفت بـ مستودع تكوين DSC WinGet وYAML يمكن الوصول إليه عبر الرابط المختصر https://aka.ms/dsc.yaml، حيث يمكنك العثور على الإلهام واستخدام القوالب التي تم اختبارها بالفعل كأساس.
الأمان والثقة وسياسات المجموعة المتعلقة بـ WinGet
بما أن WinGet وDSC يمكنهما تثبيت وتكوين البرامج بكميات كبيرةيُعد الجانب الأمني أساسياً، لا سيما في بيئات الشركات حيث توجد متطلبات امتثال صارمة للغاية.
يتكامل WinGet مع متجر Microsoft عبر Origin msstore ويستخدم تقنيات تثبيت الشهادة للتحقق من أن شهادة HTTPS الخاصة بالمتجر تتطابق مع إحدى الشهادات المعروفة وبالتالي منع هجمات الوسيط (MITM).
في المؤسسات التي تستخدم جدران الحماية المزودة بفحص SSL، قد يتسبب هذا السلوك في مشاكل إذا أعاد جهاز الأمان تغليف الاتصال بشهادته الخاصة. في مثل هذه الحالات، توجد سياسة تسمى تجاوز تثبيت الشهادة لمتجر مايكروسوفت مما يسمح لك بتحديد ما إذا كان يجب على WinGet تخطي هذا الفحص.
تشمل الخيارات الممكنة ترك السياسة غير مُهيأة (مع مراعاة السلوك الافتراضي الموصى به)، أو تمكينها بحيث يقوم WinGet لا تقم بالتحقق من صحة شهادة المتجر أو قم بتعطيله صراحةً لإجباره على قبول شهادات مايكروسوفت المعروفة فقط.
تعطيل تثبيت الشهادة يزيد من خطر هجمات الوسيطلذلك، ينبغي القيام بذلك فقط مع معرفة كاملة بالحقائق وعندما لا يكون هناك بديل معقول، مع مراعاة ملاءمته لاستراتيجية أمنية شاملة.
بالإضافة إلى هذا التوجيه، توجد قوالب سياسات مجموعة خاصة بـ WinGet (ملفات .admx و .adml) تسمح للمسؤولين التحكم في المصادر المسموح بها أو المحظورة، وتمكين أو تعطيل الميزات التجريبية، وتحديد السلوك تجاه الخوادم الوكيلة. وبشكل عام، تؤثر على كيفية تصرف مدير الحزم داخل المؤسسة.
يتم توزيع هذه القوالب داخل الحزمة DesktopAppInstallerPolicies.zip في مستودع WinGet على GitHub. بمجرد فك الضغط، يتم نسخ الملفات إلى C:\Windows\PolicyDefinitions أصبح مجلد اللغة المقابل متاحًا الآن، لذا يمكن إدارته من وحدة تحكم إدارة نهج المجموعة.
توجد أيضًا كائنات سياسة المجموعة مثل EnableWindowsPackageManagerConfiguration and EnableWindowsPackageManagerConfigurationExplanation والتي تسمح بحظر استخدام ملفات تكوين WinGet في جميع أنحاء المؤسسة، في حالة اعتبار أن هذه الوظيفة يجب تقييدها بشكل صارم.
مستودعات إضافية واستخدام مصادر خاصة في WinGet
يستخدم برنامج WinGet بشكل افتراضي المصادر التالية كمصادر رئيسية له: متجر مايكروسوفت ومستودع المجتمع على GitHubحيث يمكنك العثور على بيانات تعريفية للعديد من البرامج الشائعة: المتصفحات، ومجموعات التطوير، وأدوات التصميم، والأدوات المساعدة المختلفة، وما إلى ذلك.
لكن العديد من الشركات تحتاج إلى شيء أكثر من ذلك: مستودعات خاصة يمكنك من خلالها استضافة تطبيقاتك الخاصة، الحزم الداخلية، أو الإصدارات المعتمدة من أدوات معينة، أو الفهارس المفلترة التي تتوافق مع سياساتهم.
يتيح لك برنامج WinGet تسجيل مصادر إضافية باستخدام الأمر التالي:
winget source add --name <nombre_del_repositorio> --arg <URL_del_repositorio>
يكون هذا المصدر عادةً من نوع REST افتراضيًا، على الرغم من أنه يمكنك تحديده باستخدام --type إذا احتجت إليه. بالإضافة إلى ذلك، هناك معايير مثل –مستوى الثقة لتحديد مستوى الثقة (معدومة أو موثوقة) و –قبول-اتفاقيات-المصدر لقبول اتفاقيات ترخيص المصدر تلقائيًا، وهو أمر ضروري عند أتمتة دمج المستودعات.
للتحقق من الخطوط الموجودة حاليًا على جهاز الكمبيوتر الخاص بك، يمكنك تشغيل الأمر التالي:
winget source list
يُعيد هذا الأمر جميع المصادر المتاحة مع اسمها ونوعها. ومن ثم، ستأخذ عمليات البحث والتثبيت في WinGet المستودعات الإضافية في الاعتبار وفقًا لإعداداتك المُكوّنة.
هناك مشاريع تقدم حلول جاهزة للنشر لمستودعات WinGet الخاصة في Azure أو في عمليات التثبيت المحلية باستخدام Docker، مما يوفر مرونة كبيرة عند إعداد كتالوجات الشركات أو البيئات الخاضعة للتحكم حيث لا يوجد سوى البرامج المعتمدة من قبل قسم تكنولوجيا المعلومات.
عمليًا، يسمح الجمع بين المستودعات الخاصة وملفات تكوين YAML المصممة جيدًا توحيد تكوين البرامج والمعدات بشكل كامل شركة، مع راحة البال بأن كل شيء يأتي من أصل تتحكم فيه بنفسك.
بفضل كل ما سبق، يحوّل برنامج WinGet، وملفات تكوين YAML الخاصة به، وموارد DSC، المهمة الشاقة المتمثلة في إعداد وصيانة أجهزة الكمبيوتر التي تعمل بنظام Windows إلى عملية سهلة. أسرع بكثير، وقابلة للتكرار، وأكثر أمانًاسواء كنت مطورًا ترغب في استنساخ بيئتك عبر أجهزة كمبيوتر متعددة أو كنت تدير أسطولًا من أجهزة الكمبيوتر في مؤسسة وترغب في التوقف عن القيام بكل شيء يدويًا.

