Работа с Visual Fox Pro OleDb - PullRequest
       24

Работа с Visual Fox Pro OleDb

3 голосов
/ 16 апреля 2009

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

Ответы [ 2 ]

6 голосов
/ 16 апреля 2009

Короткий ответ - нет ... Длинный ответ:

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

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

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

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

Сначала откройте ваш проект WSI и перейдите к MSI Script.

Добавьте настраиваемое действие «Выполнить программу из пункта назначения» после 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 должна произойти без вмешательства пользователя.

3 голосов
/ 16 апреля 2009

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

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

Brian

...