Myriad Blog 1.3.0 Saturday, Jul 26th, 2014 at 09:22pm 

Wednesday, Jan 30th, 2008 at 05:26pm
Shell Folders : le fin mot de l'histoire

 
Nous avons été avertis, lors de la sortie de Vista, de problèmes d'installation de nos produits sur certains ordinateurs tournant sous ce système. Cela avait fait l'objet dans ce blog d'un billet en novembre 2007.
 
Depuis, nous avons collecté plus de renseignements sur ce problème, et dénoué l'histoire complète, ou presque.
 
Dans un vieil article en anglais du magazine en ligne Technet de Microsoft, l'auteur nous apprend que dès les premières versions de Windows 95, la méthode correcte permettant à un programme de connaître l'emplacement où loger, par exemple, ses fichiers de préférences, avait été établie : il faut appeler la fonction système SHGetSpecialFolderLocation.
 
Cependant, pour des raisons de compatibilité transitoire avec quelques programmes réalisés avec les versions beta de Windows 95, il était également possible de lire ces valeurs dans la base de registre, à l'emplacement :
HKEY_LOCAL_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell  Folders
 
Non sans une certaine ironie, l'auteur de l'article explique que, plutôt que de lire la documentation comme tout bon programmeur est censé le faire, beaucoup d'auteurs de logiciels ont choisi la facilité, en recherchant les informations directement dans la base de registre, utilisant donc la méthode "non recommandée". C'est ce que nous avons également fait. Probablement la flemme de rechercher l'information dans les 15000 pages de documentation développeur en ligne de chez Microsoft, d'autant plus que sans connaître le nom ou même l'existence de la fonction "recommandée", que rechercher ?
Pour couronner le tout, sur le site même de Microsoft, on trouve des références à ces clés de registre, sans aucune mention de la fonction officielle à appeler à la place.
 
Jusqu'à Windows XP inclus, les clés de registre étaient mises à jour régulièrement (à chaque appel de la fonction officielle) afin de refléter les valeurs correctes.
Donc, si par hasard les clés de registre étaient inconsidérément modifiées par un programme, elles revenaient à la valeur correcte dès qu'un appel était fait par quelqu'un à la bonne fonction.
Nous n'avons jamais noté de problème particulier d'installation jusqu'alors.
 
Mais voila qu'est arrivé Vista, dans lequel ce mécanisme de mise à jour des clés a été supprimé. Et voila-t-y pas qu'un programme -nous n'avons pas encore pu déterminer duquel il s'agit -  écrit des valeurs non valables dans ces clés ?
Un nom d'utilisateur "ReleaseEngineer.MACROVISION" apparaît alors en lieu et place du nom de l'utilisateur courant de Vista dans les chemins d'accès. Et lorsque le programme essaie d'ouvrir ce chemin pour y stocker ses informations, le système le lui refuse et retourne une erreur.
Résultat : sur les machines sur lesquelles ce programme a tourné, nos logiciels ne s'installent plus.
 
Les programmeurs fainéants sont nombreux, puisque, apparemment, Azureus, MSTag, East-Tec Eraser, Copernic Agent, Eagle Tree Data Logger, et j'en passe, mais sans oublier... Microsoft Outlook ou Microsoft Office 2000 rencontrent les mêmes problèmes.
 
Nous avons donc modifié nos installateurs pour leur faire utiliser la bonne méthode, et les nouvelles versions s'installeront sans problème. Mais tous nos programmes plus anciens risquent de ne pas pouvoir s'installer, et notamment la base GOLD, qui est gravée en dur sur CD-ROM, et donc non modifiable.
 
La seule solution que nous avons trouvée, c'est que les installateurs des nouvelles version de nos produits en profitent pour corriger ces entrées erronées de la base de registre. Cela ne leur apportera rien, à ces nouvelles versions, car elles n'en ont pas besoin, mais cela permettra une installation ultérieure correcte du CD GOLD, ou même d'Azureus
 
Conclusion, si vous avez des problèmes d'installation de programmes sur Vista, installez l'un de nos produits. Le médicament est à l'intérieur !
by Olivier Guillion


Most recent first
Oldest first

Top of page
Last update:  (c) Myriad 2013