Loupe

Application UWP, Brokered Component et l'erreur "InvalidCastException"

Dans le cadre de la mise en place d'évolutions sur une application UWP, j'ai été confronté à un petit souci lié à l'utilisation d'un Brokered Component.

En effet, lors du démarrage de l'application, celle-ci se charge de récupérer les lecteurs NFC installés sur le device cible pour nous permettre de les utiliser par la suite (cette détection et utilisation du NFC se fait via l'utilisation d'un BrokeredComponent dédié). Or, dans mon cas, au démarrage de l'application, l'application se lançait puis se fermait aussitôt.

En debuggant, je suis arrivé à reproduire le souci sur une machine "neuve" et voici l'erreur qui était rencontrée:

Error.png

Après vérifications, recherches et debug, il s'avère que le problème est lié au BrokeredComponent qui n'était pas bien enregistré! En effet, pour que ce dernier puisse être utilisé, il faut que le proxy C++ généré soit enregistré sur le système avec la commande "regsvr32.exe":

regsvr32.exe $installFolder\XXXX.Windows.Nfc.Reader.ProxyStub.dll

Une fois cette commande correctement exécutée (et le script d'installation mis à jour), tout a de nouveau correctement fonctionné!

 

Il est à noté que le problème n'est pas lié aux composants/briques utilisées derrière le BrokeredComponent: le souci survenait aussi dans le cas d'un Component manipulant les imprimantes, les APIs GDI+, etc.

 

Happy coding! :)

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus