WiX.Py: نجمع حزمة MSI "في ثلاثة أسطر"

لا يوجد وقت أو رغبة في دراسة ملفات WiX التي تمتد كيلومترات لبناء أداة تثبيت MSI لمشروعك ، بينما تغوص في هاوية MSDN؟ هل تريد تجميع المثبت ووصفه بعبارات بسيطة ومفهومة في عدة أسطر؟ هل هناك اتجاه سريري نحو المنصات المتعددة ويبني تحت Linux & Docker؟ حسنا ، تحت قطع!


المطورين القسري


في الواقع ، مع "قائمة الأمنيات" هذه ، تم طرح مشروعنا لمحرر رسومات المتجهات عبر الأنظمة الأساسية قبل شهرين.


عرفنا عن WiX Toolset (Windows Installer XML) ، ولكن حتى إلقاء نظرة سريعة على البرامج التعليمية على الموقع الرسمي جعلني حزينًا ومثبطًا للإحباط - لا يمكننا الاستغناء عن الانغماس الجاد في وصف XML للمثبتات. استخدمنا MakeMsi أبسط ، ولكن كان هناك الكثير من العيوب. ومرة أخرى ، لم تكن جميع هذه الأدوات مناسبة لبناء MSI في Linux.


أدى البحث إلى مشروع wixl ، الذي بنى MSI على Linux ، لكنه عانى من خلل وظيفي خطير وتطلب نفس ملفات XML ذات الحجم الوحشي مثل WiX.


ونتيجة لذلك ، من أجل الحصول على الأداة المناسبة للتجميع ، قمنا بإعادة تطبيق منطق wixl في python ، وتصحيح العديد من أوجه القصور وإضافة الوظائف اللازمة ، وجعلنا المشروع عبر منصة. هذه هي الطريقة التي جاء بها WIX.Py ، مترجم MSI مع حد دخول منخفض جدًا.


كيف يعمل WiX.Py


تم تبسيط عملية إنشاء حزمة MSI إلى الحد الأقصى:


  1. في مجلد عشوائي (على سبيل المثال build ) نقوم بتشكيل محتويات التثبيت بالشكل الذي ستكون فيه على الكمبيوتر الهدف.


  2. نملأ ملف JSON صغير. على سبيل المثال:


     { "Name": "MyApp", "UpgradeCode": "3AC4B4FF-10C4-4B8F-81AD-BAC3238BF690", "Version": "0.1", "Manufacturer": "My Company", "Description": "MyApp 0.1 Installer", "Comments": "Licensed under GPLv3+", "Keywords": "wxs, xml, build", "Win64": true, "_CheckX64": true, "_AppIcon": "resources/myapp.ico", "_ProgramMenuFolder": "My Company", "_Shortcuts": [ {"Name": "MyApp", "Description": "MyApplication", "Target": "myapp.exe", "AddOnDesktop": true, "OpenWith": [".xml", ".wxs", ".yml"] } ], "_SourceDir": "build/", "_InstallDir": "myapp-0.1", "_OutputName": "myapp-0.1_win64.msi", "_OutputDir": "./" } 

  3. نقوم بإنشاء حزمة MSI باستخدام الأمر:


     wix.py <_>.json 


نعم ، هذا مثال كامل لحزمة MSI التي سيتم التحقق منها قبل تثبيت Windows 64bit الذي سيقوم بتثبيت التطبيق في Program Files ، وإضافة التطبيق إلى قائمة البرنامج وسطح المكتب ، وإرفاق تنسيقات الملفات المحددة بالتطبيق المثبت. لا السحر والشامانية مع التسجيل.


يمكنك أيضًا تقليل المثال إلى 5-6 خطوط ، ولكن بعد ذلك ستكون وظيفة المثبت قليلة جدًا.


باستخدام WiX.Py ، يمكن إجراء تجميع MSI على كل من Windows و Linux ، بما في ذلك في حاويات عامل الميناء. نظرًا لأن libmsi الأساسي يمكن بناؤه على العديد من أنظمة UNIX الأخرى (مثل macOS) ، يمكن استخدام WiX رسميًا عليها ، ولكن هذا لا معنى له عمليًا.


يمكنك العثور على وصف للفروق الدقيقة المختلفة في وثائق المشروع .


الخلاصة


إذا كانت WiX.Py مناسبة لك لحل مشاكل إنشاء حزم MSI ، ولكنها تفتقر إلى أي وظائف ، فانتقل إلى موقعنا على الويب https://wix.sk1project.net وأنشئ طلبًا لتوسيع الوظائف. الأمر نفسه ينطبق على الأخطاء المكتشفة - تقرير وسنقوم بالتعامل معها. ستجد على الموقع شفرة المصدر والحزم الجاهزة لمنصات مختلفة.


إذا كانت هناك رغبة في المقارنة مع WiX ، فهناك بالفعل مقالات على HabX: 1 ، 2 ، 3 ، 4 .

Source: https://habr.com/ru/post/ar424091/


All Articles