Question

Je suis en train d'extraire des données de fichiers DBF dans mon programme en C #. J'utilise le Visual FoxPro OLE DB Provider. Il fonctionne très bien sur ma machine locale, mais je veux emballer mon programme en dll que les clients peuvent utiliser. Le problème est quand ils courent le programme de leur machine, il dit que le OLE DB Visual FoxPro fournisseur est pas enregistré sur leur machine. Est-il possible d'utiliser cela sans avoir le client installer le OLE DB Visual FoxPro fournisseur sur leur machine?

Était-ce utile?

La solution

La réponse courte est non ... La réponse longue est:

Je ne crois pas que vous pouvez le faire sans avoir à installer Visual FoxPro OLE DB sur chaque machine cible. Même si vous avez essayé d'utiliser COM Interop vous auriez encore à installer et à enregistrer la dll originale - vfpoledb.dll

De loin la meilleure façon de résoudre ce problème est est d'obtenir le FoxPro pilote OleDb package installer de Microsoft et de le distribuer à vos utilisateurs.

Si vous voulez rouler votre package .msi pour l'installation de votre bibliothèque, vous pouvez installer manuellement et enregistrer la dll manquante.

Pour enregistrer manuellement une DLL en utilisant regsvr32.exe dans un paquet MSI:

D'abord, ouvrez votre projet WSI et allez dans le script MSI.

Ajouter une action personnalisée « Exécuter programme de destination » après InstallFinalize dans l'onglet Exécuter immédiat.

Lorsque la boîte de dialogue 'Exécuter programme De Destination' apparaît, entrez:

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)

Si vous ajoutez le / s passer à la ligne de commande comme [SystemFolder] regsvr32.exe / s l'enregistrement de la dll doit se faire sans intervention de l'utilisateur.

Autres conseils

Je suis tombé sur un problème similaire quand je en développement sur ma machine Vista 64 bits. Je trouve que pour utiliser le fournisseur Microsoft Jet OLEDB ou FoxPro OleDB je devais définir les propriétés de mon projet .Net pour cibler spécifiquement les processeurs 32 bits car il n'y a pas de version 64 bits de ces fournisseurs.

En tout cas, pas sûr que cela fait partie du problème avec les machines cibles en utilisant votre libary mais pensé que j'offrirai.

Brian

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top