كيف يمكنني جعل برنامج التثبيت VS2008 x86 الخاص بي يقوم بتثبيت تجميعات x64 على x64؟

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

سؤال

أنا أستخدم برنامج التثبيت VS2008 (بالإضافة إلى إجراء Orca المخصص) لإنشاء برنامج تثبيت لمنتج .NET الخاص بي.

لقد اكتشفت مؤخرًا أن إحدى تجميعات الجهات الخارجية التي كنت أستخدمها خاصة بـ x86 (لأنها تتضمن بعض التعليمات البرمجية الأصلية)؛وبالتالي، كان عملاء x64 يتعرضون لأعطال عند بدء التشغيل بسبب وجود أخطاء حول عدم ملاءمة التجميع لنظامهم الأساسي.

لقد أرسلت لهذا العميل نسخة من الإصدار x64 من مجموعة الطرف الثالث هذه، وطلبت منه نسخها فوق الإصدار الموجود x86.لقد نجحت يا حلوة!والآن أنا فقط بحاجة إلى جعل المثبت يقوم بذلك نيابةً عني.

يبدو هذا في الواقع غير تافه :(.من الناحية المثالية، أريد فقط أن يقوم برنامج التثبيت (الذي سيكون x86، حيث يمكن تشغيله على كلا النظامين الأساسيين) بتضمين كلا الإصدارين x86 وx64 من تجميع الطرف الثالث هذا، وتثبيت الإصدار المناسب.بمعنى آخر، أريد أداة تثبيت واحدة تجعل حياة المستخدمين سهلة.

اعتقدت أنني قد نجحت في حل هذه المشكلة باستخدام عبارات MSI الشرطية وكل ذلك.لكن على ما يبدو لا...لن يتم تجميع مشاريع إعداد VS2008 إلا إذا قمت بتحديد "X86" أو "X64." إذا قمت بتحديد x86 ، فإنه يعطي خطأ في التجميع يقول أنه لا يمكن تضمين مجموعة X64.إذا قمت بتحديد x64، فلن يمكن تنفيذ النتيجة على جهاز كمبيوتر x86.اللعنة!

يجب أن يكون شخص ما قد واجه هذه المشكلة من قبل.لسوء الحظ، Google غير مفيد، لذا أنتقل إلى StackOverflow!

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

المحلول

إذا فهمت الأمر بشكل صحيح، فأنت تريد عمل نسخة من ملف واحد إذا كنت تقوم بالتثبيت على نظام x86 وملف مختلف (بالاسم نفسه) إذا كنت تقوم بالتثبيت على نظام أساسي x64.

أولاً، لا يمكنك إنشاء MSI واحد لمنصتين مختلفتين، نظرًا لأن x64 MSI ببساطة لن يعمل على نظام x86 وسيتم تثبيت x86 MSI باستخدام WOW64 على نظام x64.

من ناحية أخرى، يمكنك إنشاء ملف x86 MSI واحد يحتوي على نسختين مختلفتين من الملف ونسخ الملف المناسب بشكل انتقائي أثناء التثبيت.

أسهل طريقة هي استخدام WIX (V3) بدلاً من مولد VS2008 MSI المدمج.يمنحك WIX تحكمًا أكبر بكثير في ما يتم تثبيته على جهاز العميل ومكان تثبيته، والقدرة على إنشاء أدوات تثبيت مختلفة لمنصات مختلفة ودعم MSBuild الكامل كمكافأة إضافية.(يرى http://wix.sourceforge.net لمزيد من المعلومات.)

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

أخيرًا، يمكنك التحقق من خاصية VersionNT64 إذا كان مثبت x86 يعمل على نظام x64.إذا كانت هذه الخاصية موجودة، فأنت تعمل على x64، وإلا فأنت تعمل على x86.

أتمنى أن يساعدك هذا.

نصائح أخرى

عندما نظرت في هذا الأمر قبل عام، توصلت إلى استنتاج مفاده أن ذلك غير ممكن.تجدر الإشارة إلى أن العديد من ملفات MSI التي توفرها Microsoft تأتي في نسختين منفصلتين x86 وx64 - ومن المفترض أنها لن تقدم سوى ملف واحد إذا كان ذلك ممكنًا.

لقد حققت بعض النجاح باستخدام ميزتين لتضمين مجموعتين من الملفات بشكل انتقائي (في مكونات منفصلة بالطبع، مع معرفات الملفات الفردية!).

يجب وضع علامة على التثبيت على أنه x32 للتثبيت على كل من x32 وx64.سيتم تثبيته دائمًا على أدلة x32 وسيتم التعامل معه إلى حد كبير على أنه تطبيق 32 بت يعمل تحت WOW.

باستخدام خاصية VersionNT64، يمكنك تحديد ما إذا كان تثبيت Windows 64 موجودًا أم لا، وتثبيت الملفات التي تحتاجها بشكل مشروط.

لست متأكدًا من مقدار هذه الوظيفة المتوفرة في مشاريع تثبيت VS2008 - فأنا أستخدم بعض الأدوات التجارية الأخرى لإعداد برنامج التثبيت بهذه الطريقة.بالطبع يمكنك استخدام Orca للقيام بذلك أيضًا، على الرغم من أنه لم يكن من السهل جعله يعمل مع الأدوات التجارية، كما أن Orca أصعب بكثير.

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