سؤال

أقوم بإنشاء مثبت باستخدام InstallShield 2010 (MSI الأساسي) الذي يحتوي على ميزتين.

تتكون الميزة الأولى من:

  • تطبيق .NET الرئيسي مترجمة كما X86،
  • بعض DLL X86 من طرف X86 الذي يستخدمه التطبيق الرئيسي (إصدارات x64 غير متوفرة).

تحتوي الميزة الثانية على مكون واحد وهو امتداد لخدمات التقارير MS التي تم تجميعها ك AnyCPU.

أثناء تسلسل UI، أقوم باستخدام إجراءات مخصصة InstallScript لتعداد جميع مثيلات خدمات التقارير المتاحة من كل من أشجار التسجيل X86 و X64.

يطلب منك المستخدم تحديد أي مثيل يريد نشر امتدادنا.

استنادا إلى مثيل محدد، أتراجع في التسجيل للحصول على الموقع الفعلي لخدمات التقارير في نظام الملفات التي عادة ما يكون شيئا مثل "C: Program Files MSSQL.2 Reporting Services" وتخزين هذه القيمة في خاصية MSI.

ثم باستخدام Action Set Directory I أعدد دليل الوجهة للمكون (امتدادنا) إلى قيمة خاصية MSI.

يتم تثبيت كل شيء بشكل جيد تماما إلا إذا كنت قد تحاول تثبيته لخدمات الإبلاغ X64 في هذه الملفات التمديد هذه مثبتة على موقع خاطئ. حتى يتم تعيين خاصية MSI لتصحيح المسار "C: Program Files Microsoft ..." (قمت بفحص سجل MSI) يبدو أن النظام يتجاهل تلقائيا إلى "ملفات البرنامج (x86)".

هل هناك أي حل ممكن للتغلب على هذه المشكلة؟

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

المحلول 2

أخيرا حل هذه المشكلة بنفسي دون إنشاء MSI 64bit باستخدام إجراءات مخصصة التثبيت.

أول إجراء مخصص لتثبيت:

  • نسخ الملفات المطلوبة يدويا إلى الموقع المطلوب (يمكن ل InstallScript يمكن الوصول إلى ملفات برنامج X64)
  • احفظ هذا الموقع في التسجيل كمكون رئيسي لهذه الميزة للاستخدام أثناء إلغاء التثبيت

الإجراء المخصص الثاني لإلغاء التثبيت:

  • قراءة الموقع المثبت من السجل (لا تستخدم البحث عن النظام للحصول على هذه القيمة بسبب ترجمتها تلقائيا بواسطة WindowsInstaller إلى "programfiles (x86)")
  • حذف الملفات

نصائح أخرى

إذا كنت بحاجة إلى التثبيت إلى مجلد ProgramFiles 64 بت، فاستخدم MSI 64 بت.

يمكنك تغيير اندلع خاصية To ProgramFile64 بدلا من ذلك، فإن هذا البرامج، سيساعدك ذلك على التثبيت على المسار المرغوب فيه، لأن التطبيق الخاص بك هو 32 بت حتى يكون المسار C: ProgramFiles (X86) اسم الشركة الخاص بك اسم المنتج الخاص بك جنبا إلى جنب مع هذا مكوناتك متوافق 64 بت؟

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