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.
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 :