سؤال

أحاول سحب البيانات من ملفات DBF إلى برنامجي باستخدام C #. أنا أستخدم موفر Visual FoxPro OLE DB. إنه يعمل بشكل جيد على جهازي المحلي، لكنني أريد أن أحكم برنامجي في DLL التي يمكن للعملاء استخدامها. المشكلة هي عند تشغيل البرنامج من جهازها، تقول إن موفر Visual FoxPro OLE DB غير مسجل على جهازهم. هل هناك أي طريقة لاستخدام ذلك دون أن يقوم العميل بتثبيت موفر Visual FoxPro OLE DB على جهازهم؟

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

المحلول

الجواب القصير ليس ... الجواب الطويل هو:

لا أعتقد أنه يمكنك القيام بذلك دون تثبيت موفر Visual FoxPro OLE DB على كل جهاز هدف. حتى لو حاولت استخدام COM Interop، فلا يزال يتعين عليك تثبيت وتسجيل DLL الأصلي - vfpoledb.dll

إلى حد بعيد أسهل طريقة لحل هذه المشكلة هو الحصول على حزمة تثبيت سائق FoxPro OLEDB من Microsoft وتوزيعها على المستخدمين.

إذا كنت ترغب في لفة حزمة .msi الخاصة بك لتثبيت مكتبة الخاص بك، فيمكنك تثبيت DLL المفقود وتسجيلها يدويا.

لتسجيل .dll يدويا باستخدام Regsvr32.exe في حزمة .msi:

افتح أول مشروع WSI الخاص بك وانتقل إلى البرنامج النصي MSI.

أضف "تنفيذ برنامج" من الإجراء المخصص الوجهة "بعد التثبيت في علامة التبويب Execute الفوري.

عند ظهور مربع حوار "تنفيذ البرنامج من الوجهة" يدخل:

Custom Action Name: <registerdll>
Working Directory: SystemFolder
EXE and Command Line: Enter the full path to regsvr32.exe 
and the full path to .DLL.

(usually ..\Program Files\Common Files\System\Ole DB\vfpoledb.dll)

إذا قمت بإضافة التبديل / S إلى سطر الأوامر مثل [SystemFolder] Regsvr32.exe / S تسجيل DLL يجب أن يحدث دون تدخل المستخدم.

نصائح أخرى

لقد صادفت مشكلة مماثلة عندما أقوم بتطوير على جهاز Vista 64 بت. اكتشفت أنه من أجل استخدام مزود Microsoft Jet OLEDB أو FoxPro OLEDB، اضطررت لتعيين خصائص مشروع .NET الخاص بي لتحديد معالجات 32 بت تماما نظرا لعدم وجود إصدار 64 بت من هؤلاء المزودي.

على أي حال، لست متأكدا مما إذا كان هذا جزءا من المشكلة مع الأجهزة المستهدفة باستخدام Libary الخاص بك، لكنني أعتقد أنني سأقدمها.

براين

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