2017-05-29 2 views
0

Ma société développe une application qui utilise le SDK vidéo BOSCH. J'ai inclus les fichiers DLL requis dans mon projet d'installation, et je crois qu'ils sont enregistrés lorsque mon projet est installé, mais je reçois l'erreur "Classe non enregistrée" au moment de l'exécution ..Erreur de projet d'installation VS2015 80040154 Classe non enregistrée

Je suspecte mes problèmes viennent du fait que cette application est compilée en x64 et utilise les DLL 64 bits du BOSCH Video SDK. C'est intentionnel et nous voulons absolument que cela soit installé et exécuté en mode 64 bits.

Le message d'erreur exact est « retreiving l'usine de classe COM pour le composant avec CLSID {D12FF18F-AFC2-4E6E-9FEB-8FC4B57FFC93} a échoué en raison de l'erreur suivante: 80040154 Classe non enregistrée (Exception de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) ".

enter image description here

Dans mon projet d'installation toutes les dépendances sont marqués comme registre: vsdraCOM.

enter image description here

Les deux mon projet d'installation et le projet d'application lui-même ont leur objectif fixé comme « x64 ».

enter image description here

enter image description here

Dans mon projet d'installation j'ai également mis en œuvre la solution trouvée here qui décrit en détail à l'aide du script Fix64bitInstallUtilLib.js et le InstallUtilLib.dll 64 bits pour installer correctement un projet 64 bits sans courir dans le problème BadImageFormatException. Mon projet s'installe et se lance sans aucun problème mais quand il atteint la première ligne qui utilise le BOSCH Video SDK, j'obtiens l'erreur "Classe non enregistrée".

J'ai également essayé d'enregistrer manuellement les fichiers DLL en utilisant à la fois les versions 32 bits et 64 bits de regsvr32.exe, mais chaque fois que je reçois une erreur de lecture "DllRegisterServer point d'entrée" n'a pas été trouvé.

enter image description here

Je ne suis pas sûr de ce que ce qu'il reste à essayer. J'ai l'impression qu'il y a une pièce critique à ce puzzle qui me manque. S'il vous plaît laissez-moi savoir si des informations supplémentaires sont nécessaires. Notre objectif final est ici de pouvoir déployer notre fichier setup.msi sur une nouvelle machine client sans avoir à installer manuellement le SDK vidéo BOSCH. Je pensais que ce serait aussi facile que d'inclure les fichiers DLL requis et le réglage de Registre: vsdraCOM mais je suppose que ce n'est pas si simple.

+1

Il semble que cette classe soit la classe DeviceConnector du SDK Vidéo, et ne fasse donc pas partie de votre code ou de votre enregistrement. Je suppose que vous devez installer n'importe quel environnement d'exécution fourni par SDK pour prendre en charge son utilisation. Il est peu probable que vous ayez besoin de distribuer toutes ces DLL et fichiers de support dans votre configuration. – PhilDW

+0

C'est drôle, vous devriez le mentionner. Je découvre seulement maintenant le fichier d'aide fourni avec le SDK (allez figure) et il y a une section sur le paquet redistribuable de SDK visuel. Je vais jouer avec et faire un rapport avec mes conclusions. – Ian

Répondre

0

Je l'ai compris. La réponse a été d'inclure le Bosch Video SDK Runtime avec mon programme d'installation, de créer un manifeste d'application dans mon projet et d'ajouter le SDK en tant que dépdence au manifeste. Il était également pratique d'ajouter un PropertyGroup au fichier CSPROJ avec la condition 'Release | x64' afin que le manifeste ne soit inclus que lorsqu'il est compilé en mode Release.

  1. Ajoutez le dossier Bosch Video SDK Runtime au contrôle de source. Ajouter les fichiers et les dossiers d'exécution au dossier d'application dans le projet d'installation.enter image description here

  2. Ajoutez le fichier app.manifest au projet et ajoutez une section de dépendance pour le SDK. enter image description here

  3. Utilisez un éditeur de texte pour modifier votre fichier csproj et ajouter un PropertyGroup avec une condition pour « Release | x64 » afin que votre manifeste est utilisé uniquement sur les versions de mise à jour. enter image description here

Espérons que cela se révèle utile pour quelqu'un à un moment donné. La véritable leçon ici est de lire de temps en temps les fichiers d'aide.