Le SDK Gecko est facile à mettre en place, mais malheureusement incomplet. Il ne permet pas d'accèder en profondeur à tous les composants XUL, car seuls les fichiers d'entête des composants frozen (dont l'interface est considèrée comme stable) sont fournis (genre nsIDOMHTMLInputElement.h et nsIDOMHTMLTextArea.h pour les textbox). Il n'est, par exemple, pas possible de récupérer, en C++, avec le SDK Gecko, l'item sélectionné dans un lisbox.
Le but étant de créer, au final, une application standalone, c'est-à-dire indépendante d'un navigateur quelconque, que ce soit Mozilla ou Firefox, il me fallait un SDK qui soit compatible avec un navigateur Mozilla, pour le développement, et une des dernières versions de xulrunner, pour le déploiement. C'est pour cela que j'ai sélectionné, en date du 13/01/2006, le navigateur Mozilla et le SDK correspondant se situant à l'adresse :
ftp://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.8b1/
le chemin complet correspondant au SDK pour Windows étant :
ftp://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.8b1/gecko-sdk-i586-pc-msvc-1.8b1.zip
Ce SDK semble compatible avec la version de xulrunner situé à l'adresse :
ftp://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/1.8.0.1/win32/en-US/
Cela consiste simplement à dezipper le fichier en un endroit quelconque de votre disque dur. Néanmoins, lorsque l'on tente de lancer xpidl.exe, il réclame le fichier libIDL-0.6.dll, que j'ai trouvée à l'adresse :
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/
vous y trouverez également le fichier glib-1.2.dll, qui est également nécessaire au bon fonctionnement de xpidl. Les deux fichiers doivent être dézippés dans le répertoire bin.
Tous les exécutables du répertoire bin se lancent maintenant, sauf regxpcom.exe, qui réclame plusieurs DLL, que vous trouverez à la racine de l'installation du navigateur Firefox our Mozilla. Placez les fichiers réclamés également dans le répertoire bin.
Pour compiler le composant, vous aurez besoin d'un fichier d'entête C++ génèré par l'utilitaire xpidl. En outre, pour que Gecko puisse utiliser votre composant, il a besoin d'un fichier suffixé .xpt. Ces deux fichiers sont génèrés à partir d'un fichier suffixé .idl. VC++ peut se charger de génèrer ces deux fichiers. Pour ce faire, incluez votre fichier .idl dans votre projet C++, comme n'importe qu'elle autre source, puis changez ses propriétés (click gauche sur le fichier en question, puis 'Settings…”).
gecko-sdk\bin\xpidl -m header -Igecko-sdk\idl $(InputName).idl gecko-sdk\bin\xpidl -m typelib -Igecko-sdk\idl $(InputName).idl
$(InputName).h $(InputName).xpt
Vous avez maintenant un projet génèrant tous les fichiers nécessaires à partir de vos sources.