Вопрос

Я пытаюсь извлечь данные из файлов DBF в свою программу с помощью C#.Я использую поставщика OLE DB Visual FoxPro.Он отлично работает на моем локальном компьютере, но я хочу упаковать свою программу в dll, которую смогут использовать клиенты.Проблема в том, что когда они запускают программу со своего компьютера, она говорит, что поставщик OLE DB Visual FoxPro не зарегистрирован на их компьютере.Есть ли способ использовать это без установки клиентом поставщика OLE DB Visual FoxPro на свой компьютер?

Это было полезно?

Решение

Короткий ответ: нет... развернутый ответ:

Я не верю, что вы сможете сделать это без установки поставщика OLE DB Visual FoxPro на каждом целевом компьютере.Даже если вы попытаетесь использовать COM-взаимодействие, вам все равно придется установить и зарегистрировать исходную dll — vfpoledb.dll.

Самый простой способ решить эту проблему — получить Установочный пакет драйвера FoxPro OleDb от Microsoft и распространите его среди своих пользователей.

Если вы хотите создать собственный пакет .MSI для установки библиотеки, вы можете вручную установить и зарегистрировать недостающую dll.

Чтобы вручную зарегистрировать .DLL с помощью regsvr32.exe в пакете .MSI:

Сначала откройте проект WSI и перейдите к сценарию MSI.

Добавьте настраиваемое действие «Выполнить программу из места назначения» после InstallFinalize на вкладке «Немедленное выполнение».

Когда появится диалоговое окно «Выполнить программу из места назначения», введите:

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 должна происходить без вмешательства пользователя.

Другие советы

Я столкнулся с аналогичной проблемой при разработке на своей 64-битной машине с Vista.Я обнаружил, что для использования поставщика Microsoft Jet OleDB или FoxPro OleDB мне пришлось настроить свойства моего проекта .Net специально для 32-разрядных процессоров, поскольку 64-разрядной версии этих поставщиков не существует.

В любом случае, не уверен, что это часть проблемы с целевыми машинами, использующими вашу библиотеку, но решил предложить это.

Брайан

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top