سؤال

أريد إضافة دعم لـ X64 Oss إلى مثبت NSIS الخاص بي. واحدة من مهمة المثبت هي تثبيت برامج التشغيل. لقد كتبت مكون إضافي NSIS الخاص لهذه المهمة. يستخدم هذا البرنامج المساعد برنامج تشغيل أطراف تثبيت أطر API (DIFXAPI) لتثبيت برامج التشغيل.

المشكلة هي أن واجهة برمجة التطبيقات هذه لا تعمل في WOW64.

هل هناك أي طريقة لإنشاء تطبيق تثبيت X64 مع NSIS؟ هل حل أي شخص مشكلة مماثلة مع NSIS؟

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

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

المحلول

أواجه مشكلة مماثلة وأعتقد أن الحل الوحيد في الوقت الحالي هو تشغيل شيء آخر (64 بت) عبر المعالجة.

يبدو أن هذا المستند لديه حل باستخدام dpinst (http://www.microsoft.com/whdc/driver/install/32-64bit_install.mspx) على الرغم من أنني لم أجربها بنفسي بعد.

سأضيف أي شيء آخر أجده.

إضافي: لقد جعلتها الآن تعمل ، تتلخص في

  1. قم بتنزيل إصدار Windows Driver Kit 7.1.0
  2. قم بتركيب ISO وتثبيت بيئة التطوير الكاملة-> C:\
  3. ينسخ C:\WinDDK\7600.16385.1\redist\DIFx/dpinst/EngMui/amd64/dpinst.exeل myApp/drivers/dpinst64.exe
  4. ينسخ C:\WinDDK\7600.16385.1\redist\DIFx/dpinst/EngMui/x86/dpinst.exe ل myApp/drivers/dpinst32.exe
  5. انسخ حزمة برنامج التشغيل (ملف INF وما إلى ذلك) إلى myApp/drivers
  6. إلى أعلى myApp.nsi يضيف !include "x64.nsh"
  7. وفي مكان ما في قسم التثبيت في myApp.nsi يضيف:

${If} ${RunningX64}
       ExecWait '"$INSTDIR\drivers\dpinst64.exe" /c /q /sa /sw /PATH 
"$INSTDIR\drivers"'
    ${Else}
       ExecWait '"$INSTDIR\drivers\dpinst32.exe" /c /q /sa /sw /PATH 
"$INSTDIR\drivers"'
    ${EndIf}

نصائح أخرى

فقط للرجوع اليها: https://bitbucket.org/dgolub/nsis64

يوجد إصدار X64 الأصلي من NSIS في مراحل التخطيط في أحسن الأحوال ، لذلك سيتعين عليك إنشاء شيء مخصص ، إما تطبيق مساعد جديد ، أو إصدار 64 بت Rundll32 + نوع من ملف DLL المساعد.

أحاول على وجه التحديد تثبيت برنامج تشغيل مرشح نظام الملفات على X64 من تثبيت NSIS باستخدام ملف INF.

في 32 بت يمكنني أن أتصل بسعادة:

ExecWait '$SYSDIR\RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\<myinf>.inf'

ولكن ... في X64 حتى مع إيقاف تشغيل توجيه الملف باستخدام $ {disablex64fsredirection} لا يزال هناك شيء wow64 ...

لقد وجدت أنه للحصول على Rundll32.exe للعمل بشكل صحيح على X64 من NSIS ، تحتاج أيضًا إلى تعيين عرض التسجيل ليكون 64 أيضًا:

    ${If} ${RunningX64}
        ${DisableX64FSRedirection}
        SetRegView 64
    ${EndIf}

    ExecWait '$SYSDIR\RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\<myinf>.inf'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top