Dans le cadre de la nouvelle version de Blind Shark, j'ai décidé de publier un installeur. Blind Shark nécessitant la présence de deux frameworks pour fonctionner (.NET 3.5 et XNA 3.0), il me fallait un moyen de détecter leur présence sur le PC du joueur.

Le programme que j'ai utilisé pour faire l'installeur (InstallCreator) ne permet pas l'exécution de scripts personnels. Par contre, à  la fin de l'installation, je peux exécuter un fichier automatiquement. C'est là  que m'est venu l'idée de réaliser un script de vérification.

Après avoir tâté du côté du Windows Batch, je me suis finalement laissé tenté par le VBScript, qui permet plus de choses. Beaucoup plus de choses. Quelques recherches sur la méthode de détection des frameworks, sur la manière de lire la base de registre, et le script était né. Une petite erreur aujourd'hui corrigée persistait. Mais après plusieurs tests, on peut dire que le script fonctionne.

Ce script est dispo librement. Je demande juste un petit lien dans les crédits, readme ou autres si vous l'utilisez pour déployer un programme. Les fichiers .vbs s'exécutent automatiquement sous Windows, pas besoin de compilation ou autre. Et son action n'est que lecture et ouverture de navigateur web. Il n'affecte en rien le fonctionnement du PC.

'' Récupère le répertoire Windows set WshShell = WScript.CreateObject("WScript.Shell") strFonts = WshShell.SpecialFolders("Fonts") strWindows = Left(strFonts, Len(strFonts) - 5)

result = 0
'' Vérifie que le framework .NET 3.5 est présent sur la machine strFramework35 = strWindows + "Microsoft.NET\Framework\v3.5" Set oFSO_35 = CreateObject("Scripting.FileSystemObject") If not oFSO_35.FolderExists(strFramework35) Then reponse = msgbox("Le Framework .NET 3.5 est manquant - Le télécharger ?", vbExclamation+vbYesNoCancel, "Framework .NET 3.5") If reponse=6 Then '' Oui Set objOpen35 = WScript.CreateObject("WScript.Shell" ) objOpen35.Run "http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7" Else If reponse = 2 Then '' Annuler / Fermer wscript.quit -2 End If result = -1 End If End If
'' Vérifie que le framework XNA 3.0 est présent sur la machine Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") strKeyPath = "SOFTWARE\Microsoft\XNA\Framework\v3.0" strValueName = "Installed" objRegistry.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dValue If IsNull(dValue) Then '' La clé n'existe pas installed = -1 Else If dValue <> 1 Then '' La clé existe mais est différente de 1 installed = -2 Else installed = 1 End If End If
If installed <> 1 Then reponse = msgbox("Le Framework XNA 3.0 est manquant - Le télécharger ?", vbExclamation+vbYesNoCancel, "Framework XNA 3.0") If reponse=6 Then '' Oui Set objOpenXNA = WScript.CreateObject("WScript.Shell" ) objOpenXNA.Run "http://www.microsoft.com/downloads/details.aspx?FamilyId=6521D889-5414-49B8-AB32-E3FFF05A4C50&displaylang=en" Else If reponse = 2 Then '' Annuler / Fermer wscript.quit -2 End If result = -1 End If End If
If result = 0 Then msgbox "Tout semble OK pour jouer à  Blind Shark !" , , "Vérification OK" End If wscript.quit result

Utilisation

Ce script est très simple d'usage. Il va commencer par vérifier la présence du framework .NET 3.5. Si celui-ci n'est pas installé, un message propose de le télécharger. En fait, l'unique action réalisée sera d'ouvrir la page de téléchargement du framework sur le site officiel de Microsoft.

Après cette vérification, il sera fait de même pour le framework XNA 3.0. Là  aussi, il sera proposé de le télécharger via l'ouverture de la page de téléchargement.

Si les deux frameworks sont correctement installés sur la machine, un message indiquant que tout est bon sera affiché. Qui plus est, le script retourne également une valeur entière qui permet de connaître le résultat de l'opération :

  • 0 en cas de réussite
  • -1 si au moins un des éléments n'était pas installé
  • -2 si l'utilisateur a annulé le traitement du script

Pour terminer cet article, deux pages de la MSDN qui m'ont permis de détecter la présence du framework XNA :


Tags

Contact