The Luddite Developer

Friday, 21st September 2012

Visual Studio 2012 Install : Setup completed: however not all features installed correctly – KB2504637 Package Failed

Filed under: Uncategorized — theludditedeveloper @ 4:18 PM
Tags: ,

21-Sep-2012. Got RTM version of VS2012 Professional downloaded from MSDN.

Installing on Windows 7 – Windows v6.1 (Build 7601: Service Pack 1)

Setup completed: however not all features installed correctly

KB2504637 Package Failed.

KB 2504637  appears to refere to the System.Net.dll in the .net 4 framework for multi targeting. As such the impact of the error being reported during the install in unknown. Check out the Micorsoft KB link below:

There are several complaints out there regarding this probelem, but the response so far has been – ‘unable to reproduce’

Further Examples can be found at the following URLs:

Log is:


The file below is a .xlsx Excel file containing the installation log for Visual Studio 2012



Wednesday, 28th April 2010

Which versions of Silverlight 3 components do I need for VS2008 SP1 and VS2010?

Filed under: Silverlight,Uncategorized — theludditedeveloper @ 8:34 PM
Which Versions of Silverlight 3 Components are required for VS2010

Which Versions of Silverlight 3 Components are required for VS2010

Running on a XP SP3 system.

I want to keep developing applications using VS2008 SP1, Expression Studio 3 and Silverlight 3.  I don’t want to break anything.

I would like to download and start using VS2010 again without breaking anything.

I noticed the following installation issue regarding VS2010 and Silverlight 3 SDK.

Visual Web Developer in Visual Studio 2010 has support in box for Silverlight 3 development and includes the Silverlight 3 developer runtime and Silverlight 3 SDK build 3.0.40818.

Silverlight 3 Tools for Visual Studio 2008 and Expression Blend 3 included SDK build 3.0.40624.

Silverlight 3 SDK build 3.0.40818 cannot be installed on machine where build 3.0.40624 is already installed. If you install Visual Studio 2010 on a machine that already has build 3.0.40624 installed, Visual Studio 2010 will indicate that the Silverlight 3 SDK failed to install, however you will still be able to do Silverlight development on Visual Studio 2010 with build 3.0.40624.

Silverlight 3 SDK build 3.0.40818 contains the following updates:

  • Remove dependency on .NET 3.5 and allow build when only .NET 4 is installed
  • Support for use of non-unicode characters in xap name
  • Improvements to refactoring and intellisense

To get build 3.0.40818of the Silverlight 3 SDK, uninstall Silverlight 3 SDK build 3.0.40624 from Add/Remove Programs and then install Silverlight 3 SDK build 3.0.40818 from:


I checked my own system using the Add/Remove Programs utility and found the following:

Currently Installed Program Version
Microsoft Silverlight 3.0.50106.0
Microsoft Silverlight 2 SDK 2.0.31005.0
Microsoft Silverlight 3 SDK 3.0.40624.0
Microsoft Silverlight 3 Toolkit – July 2009 3.0.30702.0037
Microsoft Silverlight 3 Tools for Visual Studio 2008 SP1 –ENU 9.0.30730.126

I found that I can get the following Downloads:

Download URL
Microsoft Silverlight 3 Toolkit – Nov 2009
Microsoft Silverlight 3 SDK version 3.0.40818
Microsoft Silverlight 3 Tools for Visual Studio 2008 SP1 –ENU



  1. I do not develop for Silverlight 2, can this be safely uninstalled?
  2. In what order do I need to remove installed programs/versions and in what order do I need to install new versions?
  3. If I uninstall the Silverlight 3 Toolkit – July 2009, will this break existing applications using this toolkit?
  4. Can the Silverlight 3 Toolkit – July 2009 and Silverlight 3 Toolkit – Nov 2009 be safely installed side by side?
  5. Is there a general rule for what can and cannot be installed side by side with the various Silverlight components?
  6. I already have the current version for Microsoft Silverlight 3 Tools for Visual Studio 2008 SP1 –ENU installed.  Will it need to be re-installed?

Thanks in advance for any replies.

Thursday, 15th October 2009

Scott Hanselman and Daniel Crenna (aka Dimebrain) advise NBC that all they need for Monday Night Football is a Vado or a Flip Mino

OK this is just a bit of fun as I respect the work that these guys do and the information they put out there for we poor mortals.

Scott Hanselman Vado


I have been traveling around the country over the summer taking videos of my son at his various track meets.  I created a website and decided to add a video gallery using silverlight.  The intention was to provide a similer experience as provided by the BBC iPlayer.  In particular, I wanted viewers to be able to view the videos in Full Screen mode with one click.  I use a Panasonic SDR-S15 Camcorder, Sony Vegas Movie Studio to edit and Expression 3 to Encode at 1Mb/s.

Iam sure that the Vado HD and the Flip Mino HD perform really well in the environments used by both Scott and Daniel, but it really is a matter of horses for courses.

The Panasonic is a great little camera, lightweight, SDHC memory, and most importantly for me 10 x optical zoom.  When editing these videos and encoding them for the web one very quickly realises that if you do not have the desired quality on the original then you are not going to get the desired results on the end product.  If you check the Video Gallery then you will notice that the movies get better over time as I learn more.  Most importantly, use a tripod for these high zoom shots.

My next camera will definitely be HD and I will look to get better than 10 x zoom.  I am afraid that I can envisage an $1100 camera (UK prices really suck by the way) and I am absolutely certain that NBC will be paying a lot more than $1100 for the cameras that they use for Monday Night Football.

My point is, do not let Scott and Daniel talk you out of getting the camera you need.  If you need a Smith & Wesson 45, the most powerful hand camcorder ever made then make your day.

Friday, 9th October 2009

Silverlight, WCF, Security And Things You Might Not Know

Filed under: Uncategorized — theludditedeveloper @ 11:33 AM
Tags: , , ,


On 24-Jul-2009, I wrote an article entitled Where are the guides to Security Best Practices in Silverlight? , and followed this up with an article entitled Silverlight Security – Part One – Code Obfuscation.  Since then of I have been keeping an eye open for any new articles that tackled this very important subject.

Today, I found an article by Robbe Morris over at entitled Silverlight, WCF, Security And Things You Might Not Know.

This article covers many of the security steps that you will want to implement in any Silverlight / WCF application.

Monday, 28th September 2009

Have you got lost in the maze of tutorials available for Silverlight and WPF?

Filed under: Uncategorized — theludditedeveloper @ 8:24 PM
Tags: , , , , , , , , ,
Silverlight Confusion

Silverlight Confusion


I was looking for a tool that would allow me to organize links to all the articles that I have read.

I would like to add notes about each of the articles to tell me what important feature or technique is being explained. The notes would also tell me where to find the projects I installed or implemented on my own development systems.

I would also like to be able to index the articles by tags and categories and order the articles, videos, or tutorials in a way that will help me learn the subject in detail without missing anything out. Maybe something like a learning tree.

So for instance in Silverlight, you may have:

Silverlight Tutorial Part 1 (of 8): Creating “Hello World” with Silverlight 2 and VS 2008 by Scott Guthrie, here.

Find on my computer here:
C:\Documents and Settings\Luddite\My Documents\Visual Studio 2008\Projects\Silverlight\MSDiggSample_VB

Jesse Liberty has started Project Turing, here.

This project uses RIA Services which is currently in beta, I will want to come back to this when RIA Services has been officially released.

Brad Abrams has a series on BusinessApps for Silverlight 3 RTM and .NET RIA Services (and now Azure), here.

The articles are numerous and varied and some way of keeping things up to date, allowing you to replace articles that have become obsolete, or replace articles which you have found to do a better job.

Can anyone recommend a good product that would help with this.

Scot Hanselman recommends Evernote, not for this, but I was wondering if something like Evernote would fit the bill…

Friday, 14th August 2009

UK Developers are being overcharged by 67% for Microsoft Expression Studio 3

Filed under: Uncategorized — theludditedeveloper @ 3:22 PM
Tags: , , , ,
UK Developers are being overcharged by 67% for Expression Studio 3

UK Developers are being overcharged by 67% for Expression Studio 3

In a previous post, I mentioned that  the Microsoft Upgrade offer for Expression Studio 3 was available to those who held a license for Visual Studio 2005 or later.  In the US that means the Upgrade is available for $349 and the full product is available for $599. Both prices exclude tax.

If you live in the UK (or anywhere in the EC) you will almost certainly be overcharged to the tune of 67%

The UK Price is


This excludes VAT of


Price Excluding Tax (VAT) is


Exchange Rate is £1 = $1.70


Dollar Price (Excl Tax) in UK is


Dollar Price in US is


UK developers are being overcharged



Expression 3 Upgrade Offer for Visual Studio Developers

Expression 3 Upgrade Offer for Visual Studio Developers


Click on the image above, or click here to verify the situation for yourself.

This is the type of situation that the UK government and the EU parliament should be addressing.  Users do not need or even want IE unbundled from the Windows operating system.

Monday, 10th August 2009

Using the Background Worker Process for Long Running Processes in WPF and Silverlight

Using the Background Worker Process for Long Running Processes in WPF and Silverlight

Using the Background Worker Process for Long Running Processes in WPF and Silverlight

In a previous article WPF DataBinding using Visual Basic (VB.NET), a problem was encountered when trying to keep the User Interface active during Long Running Processes as a result of a button click.  Either the whole system would hang until the process was completed or the program would crash.

This hang-up is due to the fact that both the Long Running Process and the UI are using the same thread.  The solution is to run the Long Running Process in a separate thread.  The BackgroundWorker component, gives you the ability to execute Long Running Processes in the background asynchronously, on a separate thread from the application’s main UI thread.

I have just started a project which is going to have quite a few of these Long Running Processes and so what I need is a simple implementation of the Background Worker  process which I can expand as required.

The implementation consists of a WPF page with a start button, a cancel button and three labels to let the user know what is happening before, during and after the Long Running Process has been started by the start button.

<Page x:Class="BackGroundWorkerExample"
    x:Name="BackGroundWorkerExample"  WindowTitle="WPF Luddite Test Bed: Background Worker Example" Width="1024" Height="768">
        <Button x:Name="btnStartBackgroundProcess" Width="300" Height="30" Margin="0 20 0 0"
            Content="Start Background Process">
        <Label x:Name="lblStartedCompleted" Content="" Width="500" Height="30" Margin="0 20 0 0">
        <Label x:Name="lblCounter" Content="" Width="500" Height="30" Margin="0 20 0 0">
        <Label x:Name="lblPercentCompleted" Content="" Width="500" Height="30" Margin="0 20 0 0">
        <Button x:Name="btnCancelBackgroundProcess" Width="300" Height="30" Margin="0 20 0 0"
            Content="Cancel Background Process" IsEnabled="False">


The following steps will be required in the code behind:

1.  Define a new BackgroundWorker, create an instance and do some setup.

2. Define the LongRunningProcess – must not reference the User Interface (UI).

3. Define a subroutine to handle the BackgroundWorker DoWork event.

4. Define a subroutine to handle the BackgroundWorker ProgressChanged event.

5. Define a subroutine to handle the BackgroundWorker RunWorkerCompleted event.

6. Define a subroutine to handle the event caused by the Start button being clicked.

7. Define a subroutine to handle the event caused by the Cancel button being clicked.

Imports System.ComponentModel

Partial Public Class BackGroundWorkerExample

    '   Define a new backgroung worker.
    Private WithEvents bw As New BackgroundWorker()
    ' Create new instance of BackGroundWorker and do some setup
    Public Sub New()


        bw.WorkerSupportsCancellation = True
        bw.WorkerReportsProgress = True

    End Sub

    Private Function LongRunningProcess() As String
        '   The LongRunngProcess should NOT refer to any UI objects.
        Dim iteration As Integer = CInt(100000000 / 100)
        Dim cnt As Long = 0

        For i As Long = 0 To 100000000
            '   Bring the LongRunningProcess to an orderly termination if the Cancel button is clicked.
            '   - see further comments in routine that handles the btnCancelBackgroundProcess_Click event.
            If bw.CancellationPending Then
                Return ""
            End If

            cnt = cnt + 1

            '   Report Progress:
            '   When you need the background operation to report on its progress,
            '   you can call the ReportProgress method to raise the ProgressChanged event.
            '   The ReportProgress Method permits up to 2 parameters (ProgressChangedEventArgs):
            '       Paramater 1. Is of type Integer and is defined as "percentProgress"
            '       Paremeter 2. Is of type Object and is defined as "userState"
            '       I see no reason why you can't return any information you want as long as you conform to the
            '       parameter types integer and object.
            '   In a simple example like this, if the ReportProgress method was called for every iteration of i
            '   then the system would probably hang the user interface and run out of memory. Therefore, in this instance, we
            '   only report back on every 10,000 iterations.
            If (i Mod 10000 = 0) _
                And (bw IsNot Nothing) _
                AndAlso bw.WorkerReportsProgress Then
                '   Call ReportProgress
                bw.ReportProgress(i \ iteration, cnt)
            End If


        Return cnt.ToString()

    End Function

    Private Sub backgroundWorker_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles bw.DoWork
        ' call long running process and get result
        e.Result = Me.LongRunningProcess()
        ' Cancel if cancel button was clicked.
        If bw.CancellationPending Then
            e.Cancel = True ' This sets the Cancelled property of the RunWorkerCompletedEventArgs
        End If

    End Sub

    Private Sub backgroundWorker_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bw.ProgressChanged
        '   Use the ProgressChanged Sub to give user feedback via the UI.
        ' Update UI with values contained in ProgressChangedEventArgs e.ProgressPercentage and e.UserState.
        Me.lblPercentCompleted.Content = CStr(e.ProgressPercentage) & "% Completed."
        lblCounter.Content = CStr(e.UserState)
    End Sub

    Private Sub backgroundWorker_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) Handles bw.RunWorkerCompleted
        ' Back on primary thread, can access ui controls
        If e.Cancelled Then
            Me.lblStartedCompleted.Content = "Process Cancelled."
            Me.lblStartedCompleted.Content = "Background Process Completed. "
        End If
        Me.btnStartBackgroundProcess.IsEnabled = True
        Me.btnCancelBackgroundProcess.IsEnabled = False
    End Sub

    Private Sub btnStartBackgroundProcess_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnStartBackgroundProcess.Click
        lblStartedCompleted.Content = "Background Process Started..."
        Me.btnStartBackgroundProcess.IsEnabled = False
        Me.btnCancelBackgroundProcess.IsEnabled = True
        ' Calls DoWork on secondary thread
        ' RunWorkerAsync returns immediately.
    End Sub

    Private Sub btnCancelBackgroundProcess_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnCancelBackgroundProcess.Click
        '   There are several points to note when cancelling a process:
        '   1. The WorkerSupportsCancellation property must have been initialised to true.
        '   2. The CancelAsync method does not immediately cancel the process, but instead sets the
        '      CancellationPending property to True.  It is the therefore important that the LongRunningProcess
        '      periodically checks the CancellationPending property and if True the process should be
        '      terminated in an orderly manner.
        '   3. The CancellationPending property of the background worker process should also be checked by the
        '      routine handling the DoWork method after the LongRunningProcess has completed.
        '      If the CancellationPending Property is true then the DoWork routine should set Cancel
        '      property of the DoWorkEventArgs to True.
        '      CancelAsync() method.  This should be checked by the routine which is handling the RunWorkerCompleted
        '      event.
        '   4. It is good practice to ensure theat the Cancel button is only enabled when the LongRunningProcess
        '      is actually running.  Therefore the button should be disabled by default, only enabled when the
        '      process is started, and disable again when the process is completed or cancelled.
        btnCancelBackgroundProcess.IsEnabled = False
    End Sub

End Class

Hope this helps.

Friday, 7th August 2009

Expression 3 Upgrade Offer for Visual Studio Silverlight and WPF Developers

Filed under: Uncategorized — theludditedeveloper @ 3:00 PM
Tags: , , , , , , , ,
Expression 3 Upgrade Offer for Visual Studio Developers

Expression 3 Upgrade Offer for Visual Studio Developers

Like many small development shops and one man/woman software entrepreneurs, I have a limited budget for development tools.  Currently the best value option for me is the  Visual Studio Professional with MSDN Professional subscription. However, this does not give me access to any of the expression products, which would be very useful for Silverlight and WPF projects.

I am particularly interested in using Expression Blend for design work; Sketchflow for customer demo’s and specs; and Expression Encoder for encoding videos for my Silverlight web pages.

The great news is that you can take advantage of the Expression 3 Upgrade Offer if you own a licensed copy of Visual Studio 2005 or later.  The upgrade price offers developers a considerable saving on the full price alternative.

Sunday, 26th July 2009

Silverlight Security – Part One – Code Obfuscation





DeepSea Obfuscator

DeepSea Obfuscator

Silverlight is a client side technology which uses the Siverlight framework on the users machine.  This helps give the user the rich user interface experience normally associated with desktop application.

However, unlike ASP.NET , where application code behind is executed on the server (code behind), silverlight code must be downloaded to the client machine.  The xap file which is downloaded is basically just a zip file containing code assemblies (dll’s) and manifest files.  You can simply change the extension of an xap file to .zip and extract the files.

Your assemblies can now be read using utilities like .Net Reflector .  This enable programmers to view your code, variable names, string values, connection strings, and username/password combinations.

Never store connection strings or username/password combinations in your silverlight code.

Never directly connect to your domain database from your silverlight code, always use a web service (or ria services), more about this in part two.

Obfuscation is NOT enough on its own to deter a sufficiently motivated competitor.  You do not want modified versions of your application wreaking havoc on the world wide web.

Consider keeping commercially valuable code on your server and allowing your silverlight application to call a web service to perform the necessary routines and provide the results.

If you are accessing sensative, confidential, or commercially valuable data in your web service then use SSL encryption.

You can decide for yourself what level of obfuscation you want and can afford.  For single developers and small software companies the cost of these obfuscators may be  significant. Although some offer basic versions free of charge, if you are serious about protecting your code, your applications and your data, then you are going to require one of the paid versions and an SSL certificate.

Visual Studio already includes the free community edition of Dotfuscator from preemtive solutions.  Although this really only does basic renaming of variables, and you will probably want either the Pro version or the single developer version.

Other solutions include DeapSea Obfuscator from TallApplications and SmartAssembly from Cachupa.

Some of the obfuscation suppliers have websites that have more in common with obfuscation rather than informing the user about product features, pricing and comparisons between their different versions, so you will need to dig through their websites diligently to get all the information you want.

Friday, 24th July 2009

Where are the guides to Security Best Practices in Silverlight?



When I first started writing web application for .NET, I found a great article on security which told me how to create forms authentication and protect myself from sql injection attacks by using stored procedures and parameters.

Today, with Silverlight, we have some additional challenges.  The Silverlight code is now on the clients machine.  How do we protect access to webforms, passwords, or protect our database control string and stop users from reading or stealing our client code?

Most examples out there today are designed as sales pitches, everything is so easy when error handling and security is completely ignored.

I would love to write an article for you that gave you step by step best practices, but like many of you I am still at the start of this exciting journey, so this is a plea to those who are designing these technologies and evangelising their use. 


We need examples that can be used by small development teams (1 to 5 people) who are being told by their management (who have just watched or been to one of the flashy launch events) do me a website like MGM Stargate or NBC sports or Continental Airlines, that will handle customer orders in a way that will blow Amazon away.

Resources which I had in 2002 when I started with .Net were:

Defend Your Code with Top Ten Security Tips Every Developer Must Know by Michael Howard and Keith Brown by Timothy Bollefer, Girish Chander, Jesper Johansson, Mike Kass, and Erik Olsen.


A more recent whitepaper for silverlight 2 security is available here

but it is by no means a step by step guide of all of the thing you need to do to make your applications secure.

So come on Scott Hansleman, Tim Heuer, Phil Haack, Scott Guthrie, Beth Massie, The Silvelight Developer Team, The Visual Basic Developer Team, you have been challenged to provide step by step articles and videos or point us to appropriate references.  The articles should be based around Silverlight 3 and technologies which are current today. And, of course, be available in both VB and C#.

Next Page »

The Rubric Theme. Create a free website or blog at


Get every new post delivered to your Inbox.