DependencyChecker: Comment faire pour ignorer certaine rêgles
Je viens de me battre avec un wizard Microsoft qui contenait un DependencyChecker.
Ce dernier, comme vous l'aurez certainement compris, passe en revue un certain nombre de rêgles afin de s'assurer que la solution installée peut tourner sans problême.
C'est donc une sorte de sécurité.
Mais dans mon cas, cette sécurité m'a joué un mauvais tour...
Après le lancement du Wizard, je me retrouve avec le message suivant:
Your current OS is not supported by Fabrikam Shipping sample. This sample uses Windows Identitiy Foundation that requieres Windows Vista SP2, Windows Server 2008 SP2, Windows 7 or Windows Server 2008 R2.
Constat: mon OS est ... Windows 7

Bon, on ne se décourage pas et on regarde un peu plus loin.
Il se trouve que dans les fichier d'installation, je tombe sur un super fichier de config: Dependencies.xml
Celui-ci, en plus d'autre choses, contient le bloc suivant
<dependencies>
<os type="Vista;Server" buildNumber="2600;6001;6002;7000;7100;7600">
[...]
</os>
</dependencies>
Une recheche rapide me rend comme résultat que 7600 c'est le build number de Windows 7... Etrange....
Il semble en effet que le SP1 de 7 fasse passer le build number a 7601, ce qui à en croire le registre, est le cas de mon PC.
Vous trouverez l'info de votre pc ici: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
On relance le tool et miracle, on passe a l'étape suivante.
Et la une nouvelle erreur... Une autre dépendance: Visual Studio 2008
Ayant Visual Studio 2010, je pense pouvoir affirmer que ce que je veux installer va fonctionner.
Le bloc incriminé est le suivant:
<dependency
value=".\scripts\Dependencies\Check\CheckVS2008.ps1"
enabled="true"
optional="false"
title="Microsoft Visual Studio 2008"
explanation="This sample requires Microsoft Visual Studio 2008"
scriptName=""
downloadUrl="http://www.microsoft.com/visualstudio/" />
Dans ce cas-ci, plusieurs façon de contourner:
- faire passer le enabled a false (a vérifier)
- faire passer le optional a true : ceci va générer un warning dans le wizard mais permettra de passer a l'étape suivant
- Modifier le script (CheckVS2008.ps1) pour lui faire retourner true ou lui faire chercher VS2010
- [PREFERED OPTION] effacer le bloc, pourquoi s'embêter...
Au passage, le script est le suivant:
function SearchUninstall($SearchFor)
{
$uninstall = "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
$uninstallObjects = ls -path $uninstall ;
$found = $FALSE;
foreach($uninstallEntry in $uninstallObjects)
{
$entryProperty = Get-ItemProperty -path registry::$uninstallEntry
if($entryProperty.DisplayName -like $searchFor)
{
$found = $TRUE;
break;
}
}
$found;
}
SearchUninstall -SearchFor 'Microsoft Visual Studio 2008*';
Ca n'a pas l'air bien sorcier a modifier mais fait étrange, il va chercher dans \Uninstall ...
Etrange parce que Visual Studio a sa propre entrée dans la registry. Ca ressemble donc a une sorte de hack...
Enfin, toujours est-il que mon problème est résolu et que, je l'espère, si vous aussi vous avez ce probleme, ce post pourra vous aider.
A bientôt!
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :