On s'attaque à Silverlight, comme d'habitude Microsoft nous créé un Installeur ne répondant pas aux normes (Best Practices) de leur Produit.
Afin de rendre leur installeur "Best Practice" il y a plusieurs solutions, nous allons en aborder 2 dont une pour laquelle j'ai une grande préférence.
Nous commençons donc par télécharger Silverlight.exe chez Microsoft :
Url : http://www.microsoft.com/getsilverlight/handlers/getsilverlight.ashx
Puis nous faisons une extraction de son contenu en tapant la commande suivante depuis un prompt MSDOS dans le répertoire courant :
Silverlight.exe" /extract
La fenêtre suivante apparait, nous choisissons ou nous voulons décompresser les fichiers.
Nous obtenons les fichiers suivants :
install.exe install.res.dll silverlight.7z silverlight.msi
Nous ouvrons le fichier silverlight.7z puis on en extrait le fichier Silverlight.msp
Maintenant nous avons :
install.exe install.res.dll silverlight.7z silverlight.msi Silverlight.msp
Seul silverlight.msi et Silverlight.msp nous interresse, on efface les autres.
Il faut d'abord savoir que le fichier silverlight.msi ne contient aucun fichier et n'installe rien sur le poste si ce n'est une valeur de registre, tous les fichiers sont contenus dans Silverlight.msp, donc ce que nous devons faire c'est installer le MSI en lui appliquant le MSP, pour cela on pourrait utiliser la commande suivante :
msiexec /i silverlight.msi /update Silverlight.msp /QB!
Dans ce cas nous sommes Best Practice.
Le problème c'est que nous sommes en entreprise donc nous avons besoin de désactiver la mise à jour, aussi suivant le besoin de notre client nous pourrions être amené à devoir personnaliser la configuration de Silverlight; pour cela et afin de rester Best Practice nous devrions créer un MST à appliquer à notre MSI, la 2 problèmes possibles:
- La ligne de commande d'application du MST et du PATCH plante (durant mes tests) - Si le Package doit être Patché via WSUS, et bien il ne le sera pas!
Donc si nous voulons que notre Package soit mis à jour via WSUS, il faut qu'il soit "untouched", dans ce cas pour couper la mise à jour automatique ou personnaliser la configuration il faudra trouver un moyen d'appliquer des les clefs de registre correspondantes; ou sinon utiliser les GPO :
Ex :http://www.microsoft.com/getsilverlight/resources/documentation/grouppolicysettings.aspx
Si notre package n'est pas mis à jour via WSUS nous pouvons alors créer une installation administrative du package sur laquelle nous appliquons le Patch, puis nous créons un MST
Pour l'installation administrative la commande suivante fera l'affaire :
msiexec /p Silverlight.msp /a silverlight.msi
Noter que le changement de taille du MSI, il contient maintenant les fichiers, clefs de registre etc.
Bon cela reste une installation administrative, et puis notre MSI n'est plus signé, mais nous sommes tout de même Best Practices, comme je n'aime pas trop les installations administrative on va recréer le MSI avec le CAB streamé en utilisant un des script de la SDK de Microsoft (WiMakCab.vbs)
MSI SDK : http://www.microsoft.com/download/en/details.aspx?id=19054 (IntelSDK.msi)
Nous obtenons un MSI Complet de notre version de Silverlight, sur lequel nous pourrons appliquer un MST
Quelques clefs de registre intéressante pour la personnalisation de la configuration de Silverligth :
Clef : HKEY_LOCAL_MACHINE\Software\Microsoft\Silverlight\DRMEnabled Type : REG_DWORD Valeurs Possibles : - Disable DRM Content : 0x00000000 - Enable DRM Content : 0x00000001
Clef : HKEY_LOCAL_MACHINE\Software\Microsoft\Silverlight\UpdateMode Type : DWORD Valeurs Possibles : - Auto Update : 0x00000000 - Prompted Updates : 0x00000001 - No Updates : 0x00000002
Clef : HKEY_LOCAL_MACHINE\Software\Microsoft\Silverlight\AllowInstallOfElevatedTrustApps Type : DWORD Valeurs Possibles : - Disabled : 0x00000000 - Enabled : 0x00000001
Clef : HKEY_LOCAL_MACHINE\Software\Microsoft\Silverlight\AllowLaunchOfElevatedTrustApps Type : DWORD Valeurs Possibles : - Disabled : 0x00000000 - Enabled : 0x00000001
Clef : HKEY_LOCAL_MACHINE\Software\Microsoft\Silverlight\AllowWebcam Type : DWORD Valeurs Possibles : - Disabled : 0x00000000 - Enabled : 0x00000001
Clef : HKEY_LOCAL_MACHINE\Software\Microsoft\Silverlight\AllowUdpMulticastClientApi Type : DWORD Valeurs Possibles : - Disabled : 0x00000000 - Enabled : 0x00000001
Clef : HKEY_LOCAL_MACHINE\Software\Microsoft\Silverlight\AllowMaximumIsolatedStorage Type : DWORD Valeurs Possibles : - Disabled : 0x00000000 - Enabled : 0x00000001
|