كيف تختار أسلوب توزيع تطبيق Windows - MSI وMSIX وClickOnce وxcopy والتحديث الخاص

· آخر تحديث: · · Windows, توزيع, MSI, MSIX, ClickOnce, xcopy, updater

سجل التعديلات (3 تحديثات، آخر تحديث 3 Sep، 2026)

سجل بالتغييرات التي أُجريت على هذا المقال. وحيثما حُفظت نسخة سابقة، تبقى متاحة للقراءة عبر رابط دائم يحمل معرّف DOI.

أُضيفت روابط الاستشارة الموجودة في الأصل الياباني (consultation_services). ولم يتغيّر نصّ المقالة نفسه. قراءة النسخة السابقة لهذا التحديث (DOI: 10.5281/zenodo.22240871)
أُعيدَت الترجمة العربية كترجمة كاملة عن النص الياباني الأصلي، وأُضيفَت خريطة المعرفة.
أعيدت الترجمة كترجمة كاملة عن النص الياباني الأصلي. كانت النسخة العربية السابقة مختصراً يسقط أبواباً وجداول ورسوم Mermaid وتعليقات الأشكال وFAQ. أُعيدت هذه العناصر وفق الأصل الياباني، والادّعاءات التقنية مطابقة للنسخة اليابانية.
النشر الأول
الاستشهاد بهذا المقال(DOI: 10.5281/zenodo.21621433)

هذا المقال محفوظ على Zenodo. يرد أدناه معرّف DOI الذي يشير دائمًا إلى أحدث نسخة، ومعرّف DOI المثبَّت على النسخة التي تقرؤها.

小村 豪 (2026). كيف تختار أسلوب توزيع تطبيق Windows - MSI وMSIX وClickOnce وxcopy والتحديث الخاص. شركة كومورا سوفت ذ.م.م.. https://doi.org/10.5281/zenodo.21621433 https://comcomponent.com/ar/blog/2026/03/20/000-windows-app-deployment-msi-msix-clickonce-xcopy-custom-updater/

DOI (أحدث نسخة)
10.5281/zenodo.21621433
DOI (هذه النسخة)
10.5281/zenodo.22279863

نزّل ورقة عمل Excel للقرار، بورقتين يابانية وإنكليزية

عند تقرير أسلوب توزيع تطبيق Windows، يسهل بدء الحديث من «أيّها أحدث» أو «أيّها أبسط». لكن ما يؤثّر فعلاً في التشغيل محور آخر.

  • أتريد التثبيت بوحدة المستخدم أم على الجهاز كلّه
  • أتريد إيكال التحديث إلى منصّة التوزيع أم حمله بنفسك
  • هل يوجد تكامل مع نظام التشغيل مثل خدمة / تعريف / امتداد Shell / تسجيل COM
  • هل يلزم الصمود في شبكة مغلقة أو غير متّصلة أو توزيع USB
  • هل تحتاج package identity، أم تريد العمل Win32 خام غير مقيَّد

اختيار أسلوب التوزيع ليس تفضيل صيغة المثبِّت، بل اختيار إلى أيّ حدّ تلمس نظام التشغيل ومن يحمل مسؤولية التحديث.

محوران يقرّران أسلوب التوزيعمخطّط يبيّن أنّ اختيار أسلوب التوزيع ليس تفضيل صيغة المثبِّت من حيث الأحدث أو الأبسط، بل اختيار محورين: إلى أيّ حدّ تلمس نظام التشغيل، ومن يحمل مسؤولية التحديث.«أيّها أحدث · أبسط»لا تقرّر بهذا المحورإلى أيّ حدّ تلمس نظام التشغيليُقرَّر أسلوب التوزيعمن يحمل مسؤولية التحديث

الشكل 1: أسلوب التوزيع لا يُقرَّر بالتفضيل بل بمحورين: كثافة التكامل مع نظام التشغيل ومسؤولية التحديث.

كُتبت هذه المقالة لمطوّر يبني تطبيق سطح مكتب Windows ويقرّر أسلوب التوزيع الآن أو يريد مراجعة الأسلوب الحالي، ولمسؤول نظم المعلومات الذي يتسلّم تشغيله. لا تُفترَض لغة أو إطار معيّن. المجال كثير المصطلحات المتداولة بالإنكليزية كما هي، لذا جُمعت في 1.1. محتوى ورقة العمل في المقدّمة ملخَّص في 1.2.

1. الخلاصة أوّلاً

بصياغة فضفاضة لكن سهلة الاستخدام عمليّاً، كالتالي.

  • إن كان التثبيت على الجهاز كلّه، مع خدمة أو تسجيل COM أو إدخال افتراضات، فكّر أوّلاً من MSI نقطة انطلاق
  • إن افترضت Windows 10/11 وأردت clean install / clean uninstall وتحديثاً متكرّراً وpackage identity، فـ MSIX خيار قوي
  • إن أردت توزيع تطبيق سطح مكتب .NET داخلي بوحدة المستخدم بسهولة مع تحديث تلقائي، فما زال ClickOnce قويّاً جدّاً
  • إن أوليت أداة تعمل بمجرّد الوضع، وشبكة مغلقة، وتوزيع USB، وبلا امتيازات مدير، فـ xcopy الأصدق
  • إن أردت الإمساك بتجربة التحديث والقنوات والتوزيع المتدرّج وقياس الاستخدام واستراتيجية الاستعادة بنفسك، فـ updater خاص
  • إن لزم تعريف، فأأمن ألّا تفكّر من البداية بمركزية MSIX
  • إن لزم امتداد Shell داخل العملية في Explorer، فافحص أوّلاً نطاق ما يدعمه MSIX وشروط إصدار نظام التشغيل

بجمع فضفاض، كالتالي.

  1. التسجيل في نظام التشغيل كثيف → أميل إلى MSI
  2. تريد package identity وتغليفاً حديثاً → MSIX
  3. تريد توزيعاً per-user سهلاً وتحديثاً مضمَّناً → ClickOnce
  4. توزيع الوضع فقط أولوية قصوى → xcopy
  5. عندك عزم تصميم منصّة التحديث وتشغيلها داخل الشركة → updater خاص
جمع فضفاض للأساليب الخمسةمخطّط يبيّن أنّ التسجيل الكثيف في نظام التشغيل يميل إلى MSI، وأنّ طلب package identity والتغليف الحديث يختار MSIX، وأنّ التوزيع per-user السهل مع تحديث مضمَّن يختار ClickOnce، وأنّ توزيع الوضع فقط أولوية قصوى يختار xcopy، وأنّ عزم تصميم منصّة التحديث وتشغيلها داخل الشركة يختار updater خاص.نعملانعملانعمالوضع فقط أولوية قصوىهل التسجيل في نظام التشغيل كثيف؟أميل إلى MSIهل تريد package identity؟MSIXتوزيع per-user سهل + تحديث تلقائي؟ClickOncexcopyإن عزمت الإمساك بمنصّة التحديث فـ updater خاص

الشكل 2: إن تحيّرت، افصل بهذا الترتيب: كثافة التسجيل، ثمّ identity، ثمّ سهولة التوزيع.

1.1 مصطلحات تظهر في المتن

حول التوزيع كثير من المصطلحات المتداولة بالإنكليزية كما هي، فنرتّبها أوّلاً.

المصطلح بالعربية تقريباً المعنى
package identity معرّف الحزمة معرّف فريد يعطيه نظام التشغيل لتطبيق مغلف. توجد وظائف Windows لا تعمل بدونه
authoring إنشاء المثبِّت عمل تعريف محتوى MSI. يُستخدَم بمعنى قريب من «كتابة MSI»
custom action إجراء مخصَّص آلية تُدخل معالجة بشيفرتك حين لا تكفي إجراءات المثبِّت القياسية
ARP قائمة التطبيقات اختصار Add / Remove Programs. القائمة التي تظهر في «التطبيقات المثبَّتة» في «الإعدادات»، أو «البرامج والميزات» في لوحة التحكّم
clean install / clean uninstall تثبيت / حذف نظيف حالة يدخل فيها ما ثبّتته بلا نقص، ولا يبقى أثر عند الحذف
repair إصلاح إعادة حالة تثبيت تالفة إلى أصلها بآلية المثبِّت
telemetry قياس الاستخدام آلية تجمع نجاح التحديث أو حالة الاستخدام لفهمها
per-user / per-machine بوحدة المستخدم / بوحدة الجهاز تثبيته لذلك المستخدم فقط أم مشتركاً لكلّ المستخدمين
shell extension امتداد مستكشف الملفات مكوّن يُدمَج في المستكشف مثل قائمة النقر الأيمن أو عرض الأيقونات
unrestricted بلا قيد حالة تلمس الملفّات والسجلّ بحرّية Win32 خام، بلا قيود الحزمة
side-by-side تعايش إسكان عدّة إصدارات على الجهاز نفسه
staged rollout توزيع متدرّج عدم توزيع الإصدار الجديد للجميع دفعة واحدة، بل توسيعه بنسبة محدَّدة قليلاً قليلاً

1.2 ماذا يوجد في ورقة العمل في المقدّمة

ورقة Excel في المقدّمة لتسجيل حكم هذه المقالة مطبَّقاً على قضيتك. لها نسخة يابانية ونسخة إنكليزية، وكلّ منهما ورقتان.

ورقة Planner تنقسم إلى ثلاث كتل.

  1. ورقة الإدخال: ملء البنود السبعة التالية يتيح كتابة المرشّح الأوّل والسبب
    • نطاق التوزيع … per-user / per-machine / كلاهما / غير مقرَّر
    • عناصر التكامل مع نظام التشغيل … لا يوجد / خدمة / تعريف / امتداد Shell / تسجيل COM / عدّة
    • package identity … لازم / غير لازم / لا يمكن الحكم
    • متطلّب التثبيت بمستخدم قياسي … إلزامي / غير لازم / حسب الشرط
    • وتيرة التحديث … يدوي أو نادر / شهري / أسبوعي / أعلى
    • البيئة المستهدفة … مغلقة / غير متّصلة / Windows جديد مُدار / Windows مختلط الأجيال القديمة / USB وميدان
    • مذكّرة نوع التطبيق … سطح مكتب .NET داخلي / منتج تجاري / أداة مساعدة / مختلط
  2. تمييز المرشّحين: لكلّ أسلوب من الخمسة «شرط يُنظَر فيه بقوّة أوّلاً» و«شرط يسهل استبعاده أوّلاً»
  3. تدفّق الحكم: بأيّ ترتيب ترى البنود أعلاه، وإلى أيّ أسلوب تميل النتيجة

ورقة Reference تحمل جدول حكم الفصل 3 وجدول مقارنة الفصل 4 كما هما.

أي أنّها فصول 3 و4 و7 من المقالة بشكل يمكن ملؤه لكلّ قضية. إن خرجت الخلاصة بالقراءة وحدها فلا حاجة للتنزيل. استخدمها حين تريد مقارنة قضايا عدّة، أو إبقاء حجّة الحكم داخل الشركة.

كيف تستخدم ورقة العملمخطّط يعرض تدفّق ورقة عمل تسجّل الحكم لكلّ قضية: املأ البنود السبعة في ورقة الإدخال، وضيّق بتمييز المرشّحين وتدفّق الحكم، واكتب المرشّح الأوّل والسبب.املأ بنود ورقة الإدخال السبعةضيّق بتمييز المرشّحينمل إلى أسلوب بتدفّق الحكماكتب المرشّح الأوّل والسببورقة Reference جداول الفصلين 3 و4

الشكل 3: ورقة العمل لتحويل حكم المقالة إلى سجلّ لكلّ قضية.

في المخطّط، يشير الخطّ المتّصل إلى علاقة قائمة دائماً، ويشير الخطّ المتقطّع إلى علاقة مشروطة (شروط قيامها مذكورة في شرح كلّ علاقة في الصفحة التفصيليّة). القائمة الكاملة للعلاقات (المجموع 17، مع الأدلّة ودرجة اليقين) وتعريفات المفاهيم الرئيسة مجمّعة في صفحة تفاصيل خريطة المعرفة (باليابانية). البيانات: JSON-LD / Turtle

2. الخمسة ليست على الملعب نفسه

هذه نقطة مهمّة جدّاً.

MSI / MSIX / ClickOnce / xcopy حديث أساساً عن كيف تُدخل. أما الـ updater الخاص فحديث أساساً عن كيف تحمل مسؤولية التحديث.

أي أنّه عمليّاً أسهل ترتيباً التفكير في طبقتين.

الطبقة المرشّحون الرئيسيون ما تقرّره
التثبيت الأوّل MSI / MSIX / ClickOnce / xcopy أين تضع، ماذا تسجّل، الصلاحيات، إلغاء التثبيت
التحديث المستمر MSIX App Installer / ClickOnce / استبدال يدوي / updater خاص فحص التحديث، مصدر التوزيع، التحقّق من التوقيع، rollback، القنوات، الواجهة

بالرسم كالتالي. الخطّ المتقطّع «وسيلة تحديث تتّصل بسلاسة إن اخترت أسلوب التثبيت ذلك».

تطبيق Windows المراد توزيعهأوّلاً: كيف تُدخلطبقة التثبيت الأوّلثمّ: من يحمل مسؤولية التحديثطبقة التحديث المستمرMSIMSIXClickOncexcopyMSIX App Installerتحديث ClickOnce المضمَّناستبدال يدويupdater خاص

الشكل 4: نموذج الطبقتين: التثبيت الأوّل والتحديث المستمر. الخطّ المتقطّع وسيلة تحديث تتّصل بسلاسة.

ClickOnce وMSIX إذا قرّرت الطبقة العليا تقرّر الطبقة السفلى تقريباً. في المقابل MSI وxcopy يحتاجان تقرير الطبقة السفلى على حدة. «كيف تحدّث» يسهل أن يظلّ معلَّقاً حين تختار هذين.

لذلك أقلّ انحرافاً اعتبار الـ updater الخاص ليس ما تختاره أوّلاً، بل ما تضيفه حين توجد متطلّبات تحديث لا تكفيها أساليب التوزيع القائمة.

التحديث يظلّ معلَّقاً مع MSI وxcopyمخطّط يبيّن أنّ اختيار ClickOnce وMSIX يقرّر تقريباً وسيلة التحديث أيضاً، بينما MSI وxcopy يحتاجان تقرير طبقة التحديث المستمر على حدة، وأنّ الـ updater الخاص يُختار إضافة حين لا تكفي متطلّبات التحديث تلك.اختيار ClickOnce / MSIXوسيلة التحديث تُقرَّر تقريباًاختيار MSI / xcopyكيف تحدّث يظلّ معلَّقاًقرّر طبقة التحديث المستمر على حدةأضِف updater خاص حين لا يكفي

الشكل 5: الـ updater الخاص ليس الخيار الأوّل بل إضافة تسدّ ثغرة طبقة التحديث.

3. جدول حكم في صفحة واحدة

أوّلاً أضع أسهل جدول حكم استخداماً.

الوضع ما تختاره أوّلاً السبب
لكلّ المستخدمين، مع خدمة أو تسجيل COM أو إعداد على مستوى الجهاز MSI ركوب ملعب Windows Installer أصدق يقلّل الحوادث
تفترض Windows 10/11 وتريد clean install / uninstall وتحديثاً متكرّراً وpackage identity MSIX يسهل التقريب إلى التغليف الحديث ونموذج التحديث
تريد توزيع تطبيق عمل .NET داخلي per-user بسهولة ClickOnce نموذج التحديث المضمَّن سهل الاستخدام
أداة تعمل بمجرّد الوضع، شبكة مغلقة، USB، بلا امتيازات مدير xcopy لا تدخل مفهوم install قدر الإمكان
منتج تجاري تريد الإمساك بتجربة التحديث والقنوات بنفسك updater خاص حرّية أعلى من التحديث المضمَّن
يلزم تعريف أميل إلى MSI أو مثبِّت مخصَّص حزمة التعريفات مسألة أخرى، وMSIX لا يناسب
يلزم امتداد Shell داخل العملية أميل إلى MSI أو مثبِّت مخصَّص من Windows 11 21H2 يمكن تسجيل legacy context menu handler وغيره بـ MSIX، لكن يلزم فحص الشروط

أهمّ ما في هذا الجدول ألّا تقفز إلى updater خاص لمجرّد وجود تحديث.

4. مقارنة حسب الزاوية

الزاوية MSI MSIX ClickOnce xcopy updater خاص
سهولة التثبيت per-user ○ ○ ◎ ◎ ○
سهولة التثبيت per-machine ◎ ○ △ × ○
تحديث مضمَّن △ ◎ ◎ × ◎
package identity × ◎ × × ×
التوافق مع الخدمات ◎ △ × × ○
التوافق مع التعريفات △ × × × ○
التوافق مع امتداد Shell ◎ △ × × ○
توزيع مغلق / غير متّصل ◎ ○ ○ ◎ ◎
تكلفة التنفيذ والتشغيل ○ ○ ◎ ◎ ×
حرّية تجربة التحديث △ ○ △ × ◎

ما يُنظَر إليه في هذا الجدول ليس ما هو الأقوى بل ما فيه أقلّ احتكاك.

5. أيّ القضايا تناسب كلّ أسلوب

5.1 MSI

MSI نقطة مرجعية حين تريد تثبيت / إلغاء / إصلاح تطبيق سطح مكتب Windows تقليدي بشكل سليم.

ما يناسبه خصوصاً قضايا كهذه.

  • تطبيق عمل لكلّ المستخدمين
  • تطبيق يشمل خدمة Windows
  • تطبيق يصحبه تسجيل COM أو ربط ملفّ أو إعداد على مستوى الجهاز
  • منتج يوجد له تشغيل مثبِّت قائم

قوّة MSI أنّها تسهّل التعبير بأسلوب Windows عن «كيف أُدخل التطبيق في نظام التشغيل».

في المقابل نقاط الضعف واضحة أيضاً.

  • إنشاء المثبِّت (authoring) صعب بشكل هادئ
  • تصميم upgrade / patch بلا رويّة يسهّل المعاناة لاحقاً
  • كلّما زادت custom action ازداد الكسر
  • في منتج عالي وتيرة التحديث تثقل تجربة التحديث بسهولة
قوّة MSI وثمنهامخطّط يبيّن أنّ MSI تسهّل التعبير بأسلوب Windows عن كيف أُدخل التطبيق في نظام التشغيل، بينما إنشاء المثبِّت صعب، وكلّما زادت custom action ازداد الكسر، وتثقل تجربة التحديث في التحديث العالي الوتيرة.MSIالتعبير بأسلوب Windows عن طريقة الإدخال في نظام التشغيلاكتمال install / uninstall / repairإنشاء المثبِّت صعب بشكل هادئكلّما زادت custom action ازداد الكسر

الشكل 6: MSI تحمل صعوبة إنشاء المثبِّت مقابل قدرة التعبير عن التكامل مع نظام التشغيل.

5.2 MSIX

MSIX اختيار تريد فيه تغليفاً حديثاً وclean update / uninstall. ومعناه يكبر أيضاً حين تريد وظائف Windows تحتاج package identity.

ما يناسبه تقريباً هذا.

  • تطبيق سطح مكتب يمكنه افتراض Windows 10/11
  • تطبيق عمل أعلى وتيرة تحديث نسبيّاً
  • تطبيق يريد وظائف Windows يؤثّر فيها package identity
  • قضية تريد التقريب إلى Intune أو App Installer

قوّة MSIX نظافة التحديث وإلغاء التثبيت.

لكن ليس كلّ شيء يدخل. خصوصاً هذه الأربع أأمن فحصها أوّلاً.

  • امتداد Shell داخل العملية (من Windows 11 21H2 يمكن لـ MSIX تسجيل legacy context menu handler وغيره، لكن يلزم إعلان في البيان وفحص نظام التشغيل المستهدف)
  • تعريف
  • افتراض Win32 قديم غير مقيَّد
  • تركيب لا تريد فيه package identity

هذه الأربع تختلف جهة الفحص لكلّ منها. إن لم تتوقّف عند «يبدو أنّ MSIX مستحيل» وقرّرت حتى أيّ مصدر يحسم، كان أسرع.

ما تريد فحصه المصدر ماذا يتّضح
من أيّ إصدار Windows يعمل Microsoft Learn، «MSIX features and supported platforms» جدول إصدارات نظام التشغيل المدعومة لكلّ وظيفة
هل يمكن تسجيل امتداد Shell داخل العملية Microsoft Learn، «Support legacy context menus for packaged apps» إصدار نظام التشغيل المدعوم وطريقة الإعلان في البيان
هل يمكن تحويل مثبّتك إلى MSIX Microsoft Learn، «Prepare to package a desktop application» و«Know your installer» قائمة التراكيب التي لا تُغلَّف، وما يجب فحصه مسبقاً
ماذا يحدث لتركيب يشمل خدمة Microsoft Learn، «Convert an installer that includes services» شروط التحويل الذي يشمل خدمة وقيوده

روابط الكلّ في مراجع الفصل 9. عند الحكم انظر حتى «من أيّ إصدار، وبأيّ إعلان يُدعَم» لا «هل يُدعَم» فقط. إن لم تُمسَك مع شروط إصدار نظام التشغيل، تظهر لاحقاً بشكل «عمل على جهاز التحقّق ولم يدخل على Windows القديم في الميدان».

قيود MSIX تُحسَم حتى جهة الفحصمخطّط يبيّن أنّ النقاط الأربع التي تتحيّر فيها مع MSIX مثل امتداد Shell والتعريف تختلف مصادر فحصها، لذا لا تتوقّف عند «يبدو مستحيلاً» وانظر حتى من أيّ إصدار وبأيّ إعلان يُدعَم، فتمنع حادثة العمل على جهاز التحقّق والفشل في الميدان.أربع نقاط تتحيّر فيها مع MSIXلا تتوقّف عند «يبدو مستحيلاً»قرّر أيّ مصدر يحسمانظر حتى من أيّ إصدار وبأيّ إعلان يُدعَمامنع تحقّق الجهاز ورفض الميدان

الشكل 7: قيود MSIX تُحسَم بفحص شروط إصدار نظام التشغيل وطريقة الإعلان.

5.3 ClickOnce

ClickOnce ما زال قويّاً جدّاً حين تريد إدارة تطبيق سطح مكتب .NET داخلي per-user بسرعة، مع التحديث.

ما يناسبه مشاهد كهذه.

  • تطبيق عمل داخلي
  • تريد التثبيت بمستخدم قياسي
  • التوزيع بوحدة المستخدم يكفي
  • لا تريد بناء تجربة تحديث إلى ذلك الحدّ

في المقابل أأمن ألّا تتوقّع منه منتجاً يلمس نظام التشغيل بعمق، ولا دوراً مثبِّتاً يجمع عدّة افتراضات.

5.4 xcopy

xcopy توزيع (deploy) لا تثبيت (install). لا تسجيل في السجلّ، ولا وظيفة إصلاح، ولا package identity. مقابل ذلك، إن كفى الوضع فهو في طبقة الأقوى بساطة.

طبعها يظهر في أدوات كهذه.

  • أدوات تشخيص
  • أدوات إعداد أجهزة
  • أدوات جمع سجلّات
  • أدوات مساعدة تُسلَّم USB إلى الميدان
  • حالات تريد تعايش عدّة إصدارات side-by-side

قوّة xcopy أنّ شكل الفشل واضح. سهولة التشغيل: استبدل المجلد كلّه، وإن أردت الرجوع فارجع إلى الإصدار السابق.

xcopy توزيع لا تثبيتمخطّط يبيّن أنّ xcopy لا يحمل تسجيلاً في السجلّ ولا إصلاحاً ولا package identity، مقابل الاكتفاء بالوضع، واستبدال المجلد كلّه عند التحديث والرجوع إلى الإصدار السابق عند الإعادة، أي تشغيل شكل فشله واضح.ضع المجلد كلّهيعمل كما هوالتحديث استبدال المجلد كلّهالرجوع إعادة الإصدار السابقلا تسجيل ولا إصلاح ولا identity

الشكل 8: قيمة xcopy في بساطة التثبيت والتحديث والإعادة.

لكن بطبيعة الحال توجد أوجه ضعف.

  • قائمة ابدأ / ARP / repair
  • ربط ملفّ / خدمة / امتداد Shell / تعريف
  • تحديث مضمَّن

5.5 updater خاص

الـ updater الخاص اختيار مسؤولية أكثر من اختيار حرّية.

يستحقّ النظر حين توجد متطلّبات كهذه.

  • وتيرة التحديث عالية
  • تريد قنوات مثل stable / beta / preview
  • تريد التحكّم بالتوزيع المتدرّج ونسبة الطرح
  • تريد التحكّم الدقيق بتنزيل الخلفية والإشعارات وفترة الصيانة
  • تريد رؤية قياس الاستخدام أو استعادة الانهيار بنفسك

القوّة كبيرة، وما تدفعه كبير أيضاً.

  • التحقّق من التوقيع
  • بيان التوزيع
  • إعادة المحاولة / الاستئناف
  • الوكيل / الجدار الناري / الشبكة المغلقة
  • rollback
  • استعادة التحديث التالف
  • تحديث الـ updater نفسه

أي أنّ المسؤولية تزيد لا الحرّية.

الـ updater الخاص اختيار مسؤوليةمخطّط يبيّن أنّ الـ updater الخاص اختيار تحصل فيه على حرّية مثل القنوات والتوزيع المتدرّج وقياس الاستخدام، مقابل تحمّل تصميم وتشغيل التحقّق من التوقيع وبيان التوزيع وrollback واستعادة التحديث التالف وتحديث الـ updater نفسه.ما تحصل عليه: قنوات · توزيع متدرّج · قياس استخدامupdater خاصما تدفعه: تحقّق توقيع · rollback · استعادةالمسؤولية تزيد لا الحرّيةتحديث الـ updater نفسه أيضاً عملك

الشكل 9: ما يزيده الـ updater الخاص ليس الحرّية بل مسؤولية تشغيل منصّة التحديث.

5.6 بعد تقرير الأسلوب، ماذا تبحث لاحقاً

حتى إن قرّرت «نمضي بـ MSI»، تتوقّف إن لم تعرف ماذا تبحث بعد ذلك. نرتّب مداخل تمثيلية. ليست «استخدم هذا»، بل إن اخترت ذلك الأسلوب، يستحقّ معرفة الاسم أوّلاً.

الأسلوب المقرَّر ما تبحثه لاحقاً ملاحظة
MSI WiX Toolset مجموعة أدوات مفتوحة المصدر تكتب MSI بـ XML. مدخل قياسي لإنشاء MSI
MSI Advanced Installer، InstallShield أدوات تجارية لإنشاء MSI محورها واجهة رسومية. حين تريد تركيب custom action أو تصميم upgrade بواجهة
يكفي صيغة EXE لا MSI Inno Setup، NSIS أدوات تصنع مثبِّت EXE بصيغة خاصّة لا MSI. لا تركب ملعب Windows Installer
MSIX MSIX Packaging Tool، makeappx.exe، signtool.exe أداة تحويل من مثبِّت قائم، وأدوات تغليف وتوقيع في Windows SDK
MSIX Windows Application Packaging Project نوع مشروع في Visual Studio يحوّل مشروعاً قائماً إلى MSIX
ClickOnce معالج الإصدار في Visual Studio، mage.exe الإصدار وتوليد البيان. سلوك التحديث يُقرَّر بخيارات الإصدار
updater خاص Squirrel.Windows، Velopack، WinSparkle، NetSparkle مكتبات توفّر هيكل التحديث. قارن كيف تعامل التحقّق من التوقيع وrollback قبل جواز الاعتماد

هنا انتبه إلى أنّ اختيار الأداة واختيار الأسلوب أمران مختلفان. مثلاً Inno Setup سهل التعامل، لكن الناتج ليس MSI، فلا يركب تشغيلاً يفترض Windows Installer مثل توزيع البرمجيات بسياسة المجموعة أو الإصلاح بـ msiexec. إن كان سبب اختيار MSI في 5.1 هناك، يلزم مواءمة الأداة أيضاً.

اختيار الأداة واختيار الأسلوب أمران مختلفانمخطّط يبيّن أنّ Inno Setup سهل التعامل لكن الناتج ليس MSI، فلا يركب توزيع البرمجيات بسياسة المجموعة أو الإصلاح بـ msiexec، لذا يلزم اختيار الأداة موافقاً سبب اختيار الأسلوب.قرّر الأسلوبقرّر الأداةInno Setup لا يصنع MSIلا يركب توزيع GPO ولا إصلاح msiexecوائِم الأداة مع سبب اختيار الأسلوب

الشكل 10: الأداة المريحة لا تركب بالضرورة ملعب الأسلوب الذي اخترته.

6. نقاط يسهل التحيّر فيها

6.1 هل تحتاج package identity

إن كان المراد وظائف Windows تفترض package identity، تقفز قيمة MSIX دفعة واحدة.

في المقابل،

  • وصول غير مقيَّد إلى نظام الملفّات
  • وصول غير مقيَّد إلى السجلّ
  • حرّية الترقية / نموذج العملية
  • إبقاء افتراض Win32 القديم كما هو

فالأسلوب الأميل إلى unpackaged أطبيعي.

افصل حسب لزوم package identityمخطّط يبيّن أنّ طلب وظائف Windows تفترض package identity يقفز قيمة MSIX دفعة واحدة، وأنّ الوصول غير المقيَّد إلى الملفّات والسجلّ وإبقاء افتراض Win32 القديم يجعل الأسلوب الأميل إلى unpackaged أطبيعي.نعمتريد عملاً غير مقيَّدهل تريد وظائف تفترض package identity؟تقفز قيمة MSIX دفعة واحدةالأسلوب الأميل إلى unpackaged أطبيعي

الشكل 11: لزوم identity خطّ تقسيم بين packaged وunpackaged.

6.2 هل توجد خدمة / تعريف / امتداد Shell

هذه الثلاثة تثقل أسلوب التوزيع دفعة واحدة.

  • تعريف: لا يناسب MSIX
  • امتداد Shell داخل العملية: لا يناسب MSIX
  • خدمة Windows: MSI طبيعي، وMSIX أيضاً مقارنة مشروطة

كلّما وُجد عنصر يرتبط بنظام التشغيل بعمق، يصير الموضوع هل يمكن التثبيت والتحديث والحذف بشكل صحيح أكثر من توزيع يبدو سهلاً.

6.3 per-user أم per-machine

إن مضيت وهذا غامض، تتشاجر حتماً لاحقاً.

  • تريد الميل إلى per-user
    • ClickOnce
    • xcopy
    • بعض MSIX
  • تريد الميل إلى per-machine
    • MSI
    • MSIX إن وافقت الشروط

«تريد التثبيت بلا امتيازات مدير» و«تريد أن يستخدم كلّ المستخدمين من الموضع نفسه» ليسا الشيء نفسه.

لا تخلط per-user وper-machineمخطّط يبيّن أنّ الميل إلى per-user يرشّح ClickOnce أو xcopy أو بعض MSIX، والميل إلى per-machine يرشّح MSI أو MSIX إن وافقت الشروط، وأنّ التثبيت بلا صلاحيات واستخدام كلّ المستخدمين من الموضع نفسه حديثان مختلفان.تريد الميل إلى per-userClickOnce / xcopy / بعض MSIXتريد الميل إلى per-machineMSI / MSIX إن وافقت الشروطالتثبيت بلا صلاحيات وموضع مشترك للجميع حديثان مختلفان

الشكل 12: إن مضيت ونطاق التثبيت غامض، تتشاجر حتماً لاحقاً.

6.4 وتيرة التحديث ومسؤولية التشغيل

بحسّ وتيرة التحديث تقريباً كالتالي.

  • تحديث ربعي إلى شهري: MSI يكفي لإدارته
  • تحديث شهري إلى أسبوعي: MSIX / ClickOnce أريح بكثير
  • تحديث أسبوعي إلى يومي: يظهر سبب النظر في updater خاص
  • التحديث يدوي يكفي / جهة الوضع تتحكّم: xcopy يكفي

أسلوب التوزيع اختيار تقنية وفي الوقت نفسه تصميم تشغيل.

سلّم وتيرة التحديثمخطّط يعرض مؤشّر وتيرة التحديث: الربعي إلى الشهري يكفي فيه MSI، والشهري إلى الأسبوعي يصير فيه MSIX أو ClickOnce أريح بكثير، والأسبوعي إلى اليومي يظهر فيه سبب النظر في updater خاص، والتحديث اليدوي يكفي فيه xcopy.ربعي〜شهري: MSI يكفيشهري〜أسبوعي: MSIX / ClickOnce أريحأسبوعي〜يومي: يظهر سبب النظر في updater خاصإن كفى اليدوي فـ xcopy يكفي

الشكل 13: كلّما ارتفعت وتيرة التحديث زادت قيمة التحديث المضمَّن أو المنصّة الخاصّة.

6.5 التوزيع المغلق وغير المتّصل

في الشبكة المغلقة كثيراً ما تفوز البساطة على التحديث التلقائي الأنيق.

  • xcopy قوي
  • MSI قوي أيضاً
  • ClickOnce يعمل أيضاً بمشاركة ملفّ أو وسيط قابل للإزالة
  • MSIX يعمل أيضاً حسب استخدام App Installer

لكن إن حدّثت بكثرة في شبكة مغلقة، إن لم تقرّر حتى «من يضع الإصدار الجديد أين، وكيف تُبقى الإصدارات القديمة»، يسهل انهيار التشغيل حتى بعد اختيار الأسلوب وحده.

في الشبكة المغلقة تفوز البساطةمخطّط يبيّن أنّ الشبكة المغلقة كثيراً ما تفوز فيها البساطة على التحديث التلقائي الأنيق، وأنّ التحديث المتكرّر إن لم يقرّر حتى من يضع الإصدار الجديد أين وكيف تُبقى الإصدارات القديمة يسهل انهيار التشغيل حتى بعد اختيار الأسلوب وحده.بيئة مغلقة / غير متّصلةالبساطة تفوق التحديث التلقائي الأنيقxcopy وMSI قويانقرّر حتى من يضع الإصدار الجديد أينقرّر أيضاً كيف تُبقى الإصدارات القديمة

الشكل 14: في الشبكة المغلقة قرّر تشغيل وضع الإصدار الجديد والقديم قبل اختيار الأسلوب.

7. ستّ أسئلة تُرى أخيراً عند التحيّر

  1. هل يكفي التطبيق للمستخدم الحالي فقط، أم يلزم إدخاله على مستوى الجهاز
  2. هل توجد خدمة / تعريف / امتداد Shell / تسجيل COM
  3. هل تستخدم وظائف Windows تحتاج package identity
  4. هل تريد التثبيت بمستخدم قياسي فقط
  5. هل وتيرة التحديث شهرية أم أسبوعية أم أعلى
  6. هل البيئة المستهدفة مغلقة، وهل إصدارات نظام التشغيل متوائمة

الإجابة عن هذه الستّ وحدها تُظهر موضع الاستقرار تقريباً.

  • 2 «نعم» → فكّر أوّلاً من جهة MSI
  • 3 «نعم» → انظر في MSIX بأولوية
  • 1 المستخدم الحالي، و4 «نعم»، وتطبيق سطح مكتب .NET → ClickOnce خيار قوي
  • 4 «نعم»، و2 «لا»، وتشغيل الوضع فقط يكفي → xcopy خيار قوي
  • 5 عالية، وتريد الإمساك بتجربة التحديث قيمة منتج → أدخل الـ updater الخاص في المقارنة
موضع الاستقرار من ستّ أسئلةمخطّط يبيّن موضع الاستقرار: إن وُجد تكامل مع نظام التشغيل مثل خدمة أو تعريف فكّر أوّلاً من جهة MSI، وإن لزم package identity فانظر في MSIX بأولوية، وإن كان تطبيق سطح مكتب .NET per-user بمستخدم قياسي فـ ClickOnce قوي، وإن كفى تشغيل الوضع فقط فـ xcopy قوي، وإن أردت الإمساك بتجربة التحديث فأدخل الـ updater الخاص في المقارنة.نعملانعملاإن كان سطح مكتب .NETإن كان تشغيل الوضع فقطهل يوجد تكامل مع نظام التشغيل (خدمة وغيرها)؟فكّر أوّلاً من جهة MSIهل يلزم package identity؟انظر في MSIX بأولويةper-user + تثبيت بمستخدم قياسي؟ClickOnce خيار قويxcopy خيار قويإن أردت الإمساك بتجربة التحديث قارن أيضاً updater خاص

الشكل 15: تتبّع إجابات الستّ بهذا الترتيب يُظهر موضع الاستقرار تقريباً.

8. الخلاصة

أسلوب توزيع تطبيق Windows يُختصَر كثيراً في هذه الجملة.

افصل وقرّر كيف يُقام التثبيت الأوّل ومن يحمل مسؤولية إدارة التحديث المستمر.

بعد ذلك، الحكم العملي التقريبي كالتالي.

  • MSI: تطبيق سطح مكتب تقليدي يُدخل بعمق في نظام التشغيل
  • MSIX: تطبيق يريد package identity وتغليفاً / تحديثاً حديثاً
  • ClickOnce: تريد توزيع تطبيق عمل .NET per-user بسهولة مع التحديث
  • xcopy: أداة مكتفية ذاتياً يكفي وضعها
  • updater خاص: منتج عنده عزم تصميم التحديث نفسه وتشغيله داخل الشركة

ثمّ الأهمّ هذا.

  • إن وُجد تعريف / امتداد Shell / خدمة، فأسلوب التوزيع لا يُقرَّر بالمظهر الأخير بل من أسلوب التكامل مع نظام التشغيل
  • إن لزم package identity، فمعنى MSIX كبير
  • الـ updater الخاص ورقة أخيرة لا الخيار الأوّل
  • في الشبكة المغلقة كثيراً ما تفوز البساطة على الذكاء

إن تحيّرت، فتثبيت per-user أم per-machine، وماذا تسجّل في نظام التشغيل، وكم وتيرة التحديث فقط أوّلاً، يمضي الحديث إلى الأمام كثيراً.

ثلاثة تثبّتها أوّلاًمخطّط يبيّن أنّك إن تحيّرت فتثبيت per-user أم per-machine، وماذا تسجّل في نظام التشغيل، وكم وتيرة التحديث فقط أوّلاً، يمضي حديث أسلوب التوزيع إلى الأمام كثيراً.per-user أم per-machineثبّتها أوّلاًماذا تسجّل في نظام التشغيلكم وتيرة التحديثيمضي الحديث إلى الأمام كثيراً

الشكل 16: إن تحيّرت في الأسلوب، ثبّت هذه الثلاث فقط أوّلاً.

9. روابط مرجعية

أحدث المقالات التي تشترك في نفس الوسوم. عمّق فهمك بمواضيع مرتبطة.

ترتبط هذه المقالة بشكل طبيعي بصفحات الخدمات التالية.

الأسئلة الشائعة

أسئلة شائعة حول موضوع هذه المقالة.

ما الفرق بين MSI وMSIX؟
MSI صيغة المثبِّت التقليدية في Windows، تتوافق مع التثبيت per-machine، وخدمات Windows، وتسجيل COM، وامتداد Shell الذي يلمس نظام التشغيل بعمق، ويعبّر عن install / uninstall / repair بأسلوب Windows. MSIX تغليف حديث يفترض Windows 10/11، وقوّته clean install / clean uninstall والتحديث المتكرّر وpackage identity. في المقابل MSIX لا يناسب التعريفات، وامتداد Shell داخل العملية مدعوم بشروط من Windows 11 21H2 فصاعداً، ولا يناسب افتراض Win32 القديم غير المقيَّد. إن كان التسجيل في نظام التشغيل كثيفاً فابدأ من MSI؛ وإن أردت package identity ونظافة التحديث فابدأ من MSIX.
أيّهما تختار: MSIX أم ClickOnce؟
إن أردت توزيع تطبيق عمل .NET داخلي per-user بسهولة مع تحديث تلقائي، فما زال ClickOnce خياراً قويّاً جدّاً. نموذج التحديث المضمَّن سهل الاستخدام، ويمكن التثبيت بصلاحيات مستخدم قياسية، ولا تحتاج بناء تجربة تحديث. في المقابل إن أردت وظائف Windows تحتاج package identity، أو أوليت نظافة install / uninstall، أو أردت التقريب إلى Intune أو App Installer، فـ MSIX خيار قوي. كلاهما لا يناسب منتجاً يلمس نظام التشغيل بعمق، فإن وُجدت خدمة أو تعريف فكّر من جهة MSI.
هل ما زال ClickOnce صالحاً؟ أليس تقنية قديمة؟
ما زال صالحاً، وفي المشاهد المناسبة خيار قوي جدّاً. ينفع حين تريد توزيع تطبيق سطح مكتب .NET داخلي بسرعة، بوحدة المستخدم (per-user)، بصلاحيات مستخدم قياسية، وإدارته بنموذج تحديث مضمَّن. في المقابل أأمن ألّا تتوقّع منه منتجاً يلمس نظام التشغيل بعمق مثل خدمة Windows أو تعريف أو امتداد Shell، ولا دوراً مثبِّتاً يجمع عدّة افتراضات. من زاوية وتيرة التحديث، إن كان التحديث شهريّاً إلى أسبوعي تقريباً، يمكن إدارة الأمر براحة كبيرة بـ ClickOnce أو MSIX.
متى تنظر في updater خاص؟
الـ updater الخاص ليس ما تختاره أوّلاً، بل ما تضيفه حين توجد متطلّبات تحديث لا تكفيها أساليب التوزيع القائمة. يستحق النظر حين تكون وتيرة التحديث عالية، أو تريد قنوات مثل stable / beta / preview، أو تريد التحكّم بالتوزيع المتدرّج ونسبة الطرح، أو تريد رؤية قياس الاستخدام أو استعادة الانهيار بنفسك. لكنّك تتحمّل تصميم وتشغيل التحقّق من التوقيع وبيان التوزيع وإعادة المحاولة وrollback واستعادة التحديث التالف وتحديث الـ updater نفسه، لذا يجب اعتباره اختياراً يزيد المسؤولية لا الحرّية.

الملف الشخصي للمؤلف

صفحة الملف الشخصي لمؤلف المقالة.

غو كومورا

مؤسّس شركة كومورا سوفت ذ.م.م.

يركّز على تطوير برامج ويندوز، والاستشارات التقنية، والتحقيق في الأخطاء، ويتميّز في المشاريع التي تبقى فيها الأصول القديمة ناشطة، وفي تشخيص الأعطال التي يصعب تحديد سببها.

العودة إلى المدونة