Installation Silverlight 3.0 : The hash value is not correct.

Juste la honte pour Microsoft puisque c’est un bug connu déjà sous la 2.0 et qui n’est pas corrigé…


Si votre connection au réseau Internet n’est pas “directe” (genre derrière un proxy) vous pouvez vous recevoir en pleine figure un “The hash value is not correct.” lors de l’installation de Silverlight 3.0.


L’astuce pour contourner cette erreur est relativement simple.


  1. Faites tout d’abord une extraction de l’executable “Silverlight3_Tools.exe” à l’aide de la commande “Silverlight3_Tools.exe /x”. Genre dans un répertoire situé dans “c:\prout”.
  2. Téléchargez le developper runtime pour la 3.0 ici Silverlight.3.0_Developer.exe
  3. Placez cet executable dans le répertoire c:\prout qui contient déjà le contenu du “Silverlight3_Tools.exe” précédemment extrait.
  4. Lancez SPInstaller.exe situé dans le répertoire c:\prout

L’installation devrait cette fois ci se terminer normalement.


EDIT : je viens de voir un site qui donne une réponse à tout un tas d’erreurs d’installation (il faut dire qu’avec l’équipe MS qui s’occupe des setup Silverlight, y’a du business à se faire …) :


http://blogs.msdn.com/amyd/archive/2009/03/19/silverlight-tools-installation-error-codes.aspx


 

Ombre en Silverlight

Aujourd’hui pour faire une ombre sous un contrôle en Silverlight il n’y a pas beaucoup de possibilités.


Le faire en vectoriel s’avère difficile et on a l’habitude de passer par une image PNG, ce qui n’est pas forcement le plus optimisé.


Voici un simple code qui permet de corriger cela, et en vectoriel.  Vivement l’ajout d’effet en Silverlight pour eviter de passer par ce genre de tips…


 


<UserControl x:Class=”SmartInterface.TravelingPanel”


xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”


xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”


xmlns:d=”http://schemas.microsoft.com/expression/blend/2008″


xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006″


mc:Ignorable=”d”


d:DesignWidth=”640″ d:DesignHeight=”480″


Width=”340″ Height=”340″


RenderTransformOrigin=”0.5,0.5″>


 


<Grid x:Name=”LayoutRoot”>


<Grid.ColumnDefinitions>


<ColumnDefinition Width=”*”/>


</Grid.ColumnDefinitions>


 


<!– Six lignes qui cr‚‚ent un effet d’ombrage–>


<Border CornerRadius=”16″ Margin=”-6″ BorderThickness=”1″ BorderBrush=”Black” Opacity=”0.10″ />


<Border CornerRadius=”15″ Margin=”-5″ BorderThickness=”1″ BorderBrush=”Black” Opacity=”0.20″ />


<Border CornerRadius=”14″ Margin=”-4″ BorderThickness=”1″ BorderBrush=”Black” Opacity=”0.30″ />


<Border CornerRadius=”13″ Margin=”-3″ BorderThickness=”1″ BorderBrush=”Black” Opacity=”0.40″ />


<Border CornerRadius=”12″ Margin=”-2″ BorderThickness=”1″ BorderBrush=”Black” Opacity=”0.50″ />


<Border CornerRadius=”11″ Margin=”-1″ BorderThickness=”1″ BorderBrush=”Black” Opacity=”0.60″ />


<Border Name=”ExternalBorder”


CornerRadius=”10,10,10,10″


Background=”#FF92B825″


BorderBrush=”#FF6D8A17″ BorderThickness=”1″


RenderTransformOrigin=”0.5,0.5″>


<Border Name=”InternalBorder”


CornerRadius=”10,10,10,10″


Background=”#FF92B825″


BorderBrush=”#FFB7D265″ BorderThickness=”1″>


<Canvas Clip=”M0,8 C0,3.581722 3.581722,0 8,0 L328,0 C332.41827,0 336,3.581722 336,8 L336,328 C336,332.41827 332.41827,336 328,336 L8,336 C3.581722,336 0,332.41827 0,328 z” >


<Rectangle Width=”336″ Height=”336″>


<Rectangle.Fill>


<RadialGradientBrush GradientOrigin=”0.197,0.58″>


<RadialGradientBrush.RelativeTransform>


<TransformGroup>


<ScaleTransform CenterX=”0.5″ CenterY=”0.5″ ScaleY=”1.27″ ScaleX=”1.874″/>


<SkewTransform CenterX=”0.5″ CenterY=”0.5″/>


<RotateTransform CenterX=”0.5″ CenterY=”0.5″/>


<TranslateTransform Y=”0.234″ X=”0.191″/>


</TransformGroup>


</RadialGradientBrush.RelativeTransform>


<GradientStop Color=”#FF6D8A17″ Offset=”0.759″/>


<GradientStop Color=”#FF92B825″ Offset=”1″/>


</RadialGradientBrush>


</Rectangle.Fill>


</Rectangle>


<Rectangle Width=”336″ Height=”336″>


<Rectangle.Fill>


<LinearGradientBrush EndPoint=”0.5,1″ StartPoint=”0.5,0″>


<GradientStop Color=”#B2000000″ Offset=”0.978″/>


<GradientStop Color=”#00FFFFFF” Offset=”0.527″/>


</LinearGradientBrush>


</Rectangle.Fill>


</Rectangle>


</Canvas>


</Border>


</Border>


</Grid>


</UserControl>


 


Les deux Border d’affilés provoquent cet effet d’ombrage réalisé relativement facilement et sutout très rapide à afficher pour le moteur graphique de votre plugin préféré. Le resultat est le suivant :

J’utilise un Border dans la mesure où le contrôle sur lequel j’applique un ombrage possède des cotés arrondis. Sur les contrôles carrés ou rectangulaires, l’utilisation du shape Line sera un meilleur choix. Enfin, il suffit de jouer sur la taille de la bordure (Thickness) pour affiner l’ombrage ainsi que le nombre de couche pour améliorer le rendu (ici de 0,60d à 0,10d).

 



 




[Soon]