J'essaie d'extraire des données de fichiers DBF dans mon programme en utilisant C#. J'utilise le fournisseur OLE DB Visual FoxPro. Cela fonctionne bien sur ma machine locale mais je veux empaqueter mon programme dans la DLL que les clients peuvent utiliser. Le problème est quand ils exécutent le programme à partir de leur ordinateur, il dit que le fournisseur OLE DB Visual FoxPro n'est pas enregistré sur leur ordinateur. Est-il possible d'utiliser ceci sans que le client installe le fournisseur OLE DB Visual FoxPro sur leur ordinateur?Travailler avec Visual Fox Pro OleDb
Répondre
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 devrez toujours installer et enregistrer le dll d'origine - vfpoledb.dll
De loin la meilleure façon de résoudre ce problème est d'obtenir le FoxPro OleDb Driver install package de Microsoft et le distribuer à vos utilisateurs .
Si vous souhaitez créer votre propre package .MSI pour l'installation de votre bibliothèque, vous pouvez installer manuellement et enregistrer la DLL manquante.
Pour enregistrer manuellement un .DLL en utilisant regsvr32.exe dans un package .msi:
d'abord ouvrir votre projet WSI et aller au script MSI.
Ajoutez une action personnalisée «Exécuter un programme à partir de la destination» après InstallFinalize dans l'onglet Exécution immédiate.
Lorsque le « Exécuter programme De Destination » boîte de dialogue 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 devrait se produire sans intervention de l'utilisateur.
J'ai rencontré un problème similaire lors de mon développement sur ma machine Vista 64 bits. J'ai découvert que pour utiliser le fournisseur Microsoft Jet OleDB ou FoxPro OleDB, j'ai dû 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.
Quoi qu'il en soit, je ne sais pas si cela fait partie du problème avec les machines cibles utilisant votre bibliothèque, mais j'ai pensé que je l'offrirais.
Brian