هل من الممكن/المعقول تغليف مثبت Inno Setup داخل MSI لتسهيل التوزيع عبر AD؟

StackOverflow https://stackoverflow.com/questions/71203

  •  09-06-2019
  •  | 
  •  

سؤال

تمت كتابة برنامج التثبيت الخاص بنا باستخدام Inno Setup ونحن في الواقع سعداء جدًا به.ومع ذلك، يستمر بعض العملاء في المطالبة بمثبت MSI والذي يمكنهم توزيعه بسهولة أكبر عبر Active Directory.لقد بذلنا بالفعل بعض الجهود لجعل أداة التثبيت تتعامل بشكل جيد مع عمليات التثبيت التلقائية وغير المراقبة من خلال توسيع نطاق إعداد Inno /LOADINF-آلية مع خياراتنا الخاصة.

من أجل إرضاء العملاء الذين يطلبون MSI، كنت أفكر ببساطة في تغليف برنامج التثبيت العادي الخاص بنا داخل MSI، وربما تم إنشاؤه باستخدام WIX.السؤال هو:هل يمكنني الحفاظ على إمكانية التهيئة العالية التي يقدمها برنامج التثبيت الحالي لدينا بهذه الطريقة؟كيف يمكنني الكشف عن خيارات برنامج تثبيت Inno Setup من خلال MSI الخارجي في سيناريو التثبيت غير المراقب/الضخم؟

لاحظ أنني لم أصل إلى مرحلة التعمق في إنشاء MSI وWIX بنفسي حتى الآن.في الوقت الحالي، أنا مهتم فقط بما إذا كان الأشخاص الذين يعرفون ما يتحدثون عنه يعتقدون أن هذا سيكون نهجًا ممكنًا/معقولًا لاستثمار طاقتنا في المقام الأول...

تحرير:] في البداية اعتقدت أنه يمكنني فعل ذلك مع نهج استخراج مؤقت وتنفيذ ، أيسيكون MSI ببساطة بمثابة وعاء لتوصيل برنامج تثبيت Inno إلى الكمبيوتر المستهدف وتنفيذه هناك /VERYSILENT-وضع.ولكن أعتقد أن العملاء الذين يطلبون MSI يريدون أيضًا أن يكونوا قادرين على إلغاء التثبيت أو حتى تعديل التثبيت من موقع مركزي وأعتقد أن ذلك لن يكون ممكنًا في هذا السيناريو، أليس كذلك؟

ملاحظة.:لدينا نسخة قديمة من WISE لـ MSI هنا أيضًا ولكن هذه التجربة كانت في الواقع السبب وراء بدءنا في استخدام Inno بدلاً من ذلك للبدء...

هل كانت مفيدة؟

المحلول

لا، لا توجد طريقة للقيام بذلك مع الاحتفاظ بالوظائف التي يطلبها عملاؤك "ضمنيًا"."الالتفاف" الوحيد في MSI الذي يمكنك القيام به هو استخراجه عند التثبيت وبدء تشغيل برنامج تثبيت InnoSetup الخاص بك من الموقع المؤقت الذي قمت بالاستخراج إليه.MSI هي طريقة عمل مختلفة جذريًا:يتبع InnoSetup (و NSIS ومعظم أدوات التثبيت الأخرى) منهجًا يركز على التعليمات البرمجية:أنت "تبرمج" "الخطوات" لتثبيت بياناتك.MSI هي قاعدة بيانات وتتخذ نهجًا "يرتكز على البيانات":تحدد الملفات التي يجب تثبيتها وسيتولى "وقت تشغيل" MSI الباقي.يمنحك هذا الإصدار والتحكم الدقيق في ما يحدث وأين.

باختصار، لمنح عملائك ما يريدون (أي سهولة النشر التي توفرها MSI مع AD)، ستحتاج إلى MSI "مناسب".حظا سعيدا في ذلك، إنه ألم كبير IMHO.ولكنها تعطي نتائج جيدة بمجرد إتقان MSI وWiX.

نصائح أخرى

لقد واجهت هذه المشكلة عدة مرات بنفسي.لذلك، قمت بإنشاء طريقة قياسية للتعامل مع هذه المشكلة ونتج عنها معالج يرشدك خلال الخطوات.ستدعم الأداة ما يلي:

  1. قم بلف ملف exe في MSI.
  2. دعم إلغاء التثبيت.
  3. إظهار برنامج واحد فقط في "إضافة أو إزالة البرامج".
  4. السماح لك بتمرير وسيطات سطر الأوامر مثل /SILENT إلى الإعداد المضمن عند تشغيل حزمة MSI مع MSIEXEC.EXE.

يمكنك الحصول عليه في http://www.exemsi.com (النسخة الأساسية مجانية)

استخدم نموذج الاتصال الخاص بي وأخبرني برأيك :-)

ردا على تعديلك:نعم، ما تصفه سيمنع إجراء الترقيات (بخلاف الحذف/إعادة التثبيت) والتكوين عن بعد، نظرًا لأن قاعدة بيانات MSI لن تعرف أي شيء عن محتويات برنامج التثبيت الخاص بك.

بدأت العديد من حزم التثبيت "دعم" MSI بهذه الطريقة، على الرغم من ذلك:فعلت InstallShield، على سبيل المثال.هذا هو السبب الرئيسي الذي دفعني إلى التخلص منها، لأن أدوات التثبيت التي تم إنشاؤها بهذه الطريقة عديمة الفائدة لأغراض MSI.لا أعرف ما إذا كانت الإصدارات الحديثة من InstallShield أفضل أم لا، آخر مرة قمت فيها بالتحقق كانت قبل 5 سنوات.

من السهل جدًا إنشاء مجموعة أدوات تثبيت تقوم تلقائيًا بتثبيت INNOSETUPper من MSI.بالنسبة للوظائف الأساسية (التثبيت/إلغاء التثبيت) فهذا يكفي.لا يقوم معظم القائمين على الإعداد بتنفيذ الإصلاح على أي حال.

  1. إنشاء برنامج نصي Silent.inf لإعداد INNO (اختياري)

  2. قم بإنشاء install.bat الذي يستدعي

    myinnosetup.exe /silent /NOCANCEL /norestart /Components = "xxx"

    يمكنك استخدام /verysilent
    يمكنك تحميل الإعدادات من Silent.inf باستخدام /LOADINF="silent.inf"

  3. قم بإنشاء ملف إعداد MSI الذي يستدعي install.bat (مع المعلمات إذا لزم الأمر)

  4. قم بتسليم جميع الملفات الأربعة إلى عميلك ويمكنهم نشر برنامج إعداد Inno الخاص بك عبر الرسائل القصيرة أو ActiveDirectory وسيكون الجميع سعداء :)

أود أن أزعم أنه من الممكن القيام بكل ما تريده باستخدام برنامج Inno Setup المغطى بـ MSI، ولكنه ليس أمرًا تافهًا على الإطلاق، واستخدام WiX قد يجعل هذه المهمة أكثر صعوبة.باختصار لا أوصي به حقًا.

ولكن إذا كنت ترغب حقًا في ذلك ...

ملفات MSI هي ببساطة ملفات قاعدة بيانات تحتوي على تعليمات نصية إضافية وغالبًا ما تقوم بتضمين ملف .cab الذي يحتوي على العناصر التي تريد تثبيتها بالفعل.

إذا كنت تستخدم Wise، فسوف تقوم بإنشاء برامج نصية افتراضية يمكنك بعد ذلك إضافة شروط Windows Installer إليها والتحكم في الأحداث بدرجة أدق (تثبيت، إصلاح، تعديل، إلغاء التثبيت) بحيث تستدعي إجراءات مكافئة على البرنامج النصي لتثبيت Inno Setup الخاص بك والذي من شأنه أن يجب تثبيتها والاحتفاظ بها في مجلد مؤقت.

ليس من المنطقي خلط تقنيات التثبيت.

إذا كنت تخلط فستحصل على المشكلة الأولى المتعلقة بأشياء إلغاء التثبيت.بدون تغييرات تحصل على برنامجي إلغاء التثبيت لبرنامجك.

هناك بعض المقالات التي تبدأ بمثبت Windows في "مجلة entwickler"

  • مجلة إنتويكلر (أوسجابي:03.09/15.04.2009) المقالة:MSI-Pakete MIT Open-Souce-Software Erzeugen Teil 4
  • مجلة إنتويكلر (أوسجابي:02.09/12.02.2009) المقالة:MSI-Pakete MIT Open-Souce-Software Erzeugen Teil 3
  • مجلة إنتويكلر (أوسجابي:01.09/10.12.2008) المقالة:MSI-PAKETE MIT OPEN-SOUCE-SOFTWARE ERZEUGEN TEIL 2
  • مجلة إنتويكلر (أوسجابي:06.08/15.10.2008) المقالة:MSI-Pakete مزود ببرامج مفتوحة المصدر

http://entwickler-magazin.de/

يجب أن يكون مثبت Windows هو التقنية الوحيدة لعمليات التثبيت الخاصة بك.دليل على مستقبلها ومستقرها!

إن تغليف إعداد Inno في حزمة MSI ليس مهمة تافهة.ومع ذلك، فمن الممكن.هناك الكثير من الأدوات المجانية التي يمكن استخدامها للقيام بذلك.يجب عليك اختيار نظام يدعم أيضًا عمليات إلغاء التثبيت والترقيات.

لقد وجدت أداة مجانية واحدة فقط تدعم الترقيات وإلغاء التثبيت.الدفع http://www.exemsi.com/inno-setup-and-msi

إن القيام بذلك سيكون معادلاً إلى حد كبير تسليم ملف ZIP واستدعاء فك الضغط بنهاية التثبيت.

مع هذا النهج، سيتم خداع AD وWindows Installer كما لو كانا يتعاملان مع تثبيت MSI مناسب، ولكن نظرًا لأن الأمر ليس كذلك، فسوف يأتي بنتائج عكسية عليك في المرة الأولى.

لا تذهب بهذه الطريقة.

وWiX هي مجموعة أدوات متفوقة على InnoSetup، على أي حال، وبالتالي فإن الوقت الذي ستقضيه في التعلم والترقية سيؤتي ثماره من خلال دعم أفضل للتعاون.

على الرغم من أن التعليق الأخير ممكن وقابل للتنفيذ، إلا أن الانتقال إلى MSI هو أفضل طريقة للتعامل مع هذا الأمر.

تشترط جميع المؤسسات الكبيرة تقريبًا MSI فقط، وهناك العديد من الأسباب لذلك.

1) الأول هو سهولة النشر 2) أكثر أهمية بالنسبة للبعض هو التطبيق الاجتماعي 3) الشفاء الذاتي

إن إعداد inno والأدوات الأخرى المشابهة التي لا تطبق Windows Installer لا يمكنها ببساطة توفير التواصل الاجتماعي للتطبيق بنفس الطرق التي يوفرها مثبت Windows.

عليك أن تفهم أن إعداد Inno هو برنامج مصمم لنشر تطبيق واحد.

يعد Windows Installer إطارًا كاملاً للتعامل مع التواصل الاجتماعي وانتحال هوية المستخدم ورفع مستوى المستخدم والشفاء الذاتي وإصلاح ملف تعريف المستخدم.

كلاهما ليسا قريبين من الوظائف حتى عن بعد، إعداد inno في ذهني بعيد تمامًا تمامًا عن المسار من حيث المقارنة مع مثبت Windows.

هل يمكن إنشاء مثبتات ناجحة؟نعم هل من السهل الاستخدام؟نعم هل يخلق مثبتات واحدة جيدة؟نعم هل هو الخيار الأفضل للمؤسسة؟لا

أقدم الأدوات التي طورتها Microsoft "SMS Installer" كانت موجودة منذ 10 سنوات.لقد تغيرت الأمور بشكل جذري في عالم التثبيت ولم يواكب إعداد inno وتيرة هذا التغيير.

أحتاج إلى إدخال قيمة مخصصة على Silent.inf (ليست قيمة إعداد إعداد inno مثبتة) لا يبدو أن LOADINF يسمح بذلك.

ملاحظة: إذا كنت تستخدم makemsi، فلن تحتاج إلى تضمين مضرب حيث يمكنك استخدام $WrapInstall.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top