Skip to content
/

Installing the Microsoft Surface SDK on Windows 7 x64

If you want to develop for the Microsoft Surface (the table, not the tablet) you need a Surface device. But using the device to develop is not always practical, specially when there are more developers than Surface devices. The solution for this is to install the Surface SDK Workstation Edition on your local development machine. This post will address some limitations you have to work around.

The Microsoft Surface SDK

The Microsoft Surface SDK was released to attendees of the PDC in 2008, where I was one of the lucky few. You can still view the Developing for Microsoft Surface session on Channel 9.

With the PDC 2009 the Microsoft Surface SDK 1.0 SP1 Workstation Edition was publically released.

Prerequisites

Before you can install the Surface SDK there are some prerequisites:

When you're running Vista x86

Assuming you're not running Windows Vista Starter Edition you can install the Surface SDK without problems and can start developing immediatly!

When you're not running Vista or x86

Error dialog diplaying the message: "Your system does not have the correct version of Windows Vista. You must install Microsoft Surface SDK 1.0 SP1, Workstation Edition on a 32-bit version of Windows Vista with Service Pack 1 (SP1). Microsoft Surface SDK 1.0 SP1, Workstation Edition also does not support Windows Vista Starter edition."

Well let's face it, Windows Vista is old and gone, and everybody is running Windows 7 nowadays. So does this mean no more Surface development?

Lucky enough wrote a great blog post about this and I will summarize it here.

Naturally this makes the installation not supported by Microsoft.

Extracting the installer

There are two installers on the web available at the moment. An executable if you download the SDK from the partner site and a MSI if you download the SDK from the public Microsoft download site.

For the MSI:

msiexec /a SurfaceSDKWE.msi /qb TARGETDIR=c:\surface

For the executable:

"Microsoft Surface SDK 1.0 SP1, Workstation Edition.exe" /extract c:\surface

Patching the installer

Get the Orca tool from the Windows SDK, or if you don't want to download 4GB for a tool not bigger than 2MB, try a less supported site. ;)

  1. Open the extracted SurfaceSDKWE.msi file with Orca.
  2. Select the table LaunchCondition
  3. Select the row with Installed OR NOT VersionNT64 and choose Drop row
  4. Save & Close Orca

Patching the Custom Actions

This is only needed on a x64 machine.

Get the CorFlags tool from the Windows SDK, or if you still don't want to download 4GB, try an even lesser supported site. :)

  1. Open a command prompt with elevated privileges (Run as administrator).
  2. Go to the location of the extracted installer
    cd "Microsoft Surface\v1.0"
    CorFlags setupcustomaction.exe /32BIT+ /Force /nologo

    Ignore the warning with the code CF011 about strong named signing.
    Command prompt showing the warning "corflags : warning CF011 : The specified file is strong name signed. Using /Force will invalidate the signature of this image and will require the assembly to be resigned." after execution.

Installing the SDK

This is pretty straightforward.

First screen of the Microsoft Surface SDK 1.0 SP1, Workstation Edition Setup

If you are running on a x86 system you can start developing!

Patching the executables

This is only needed on a x64 machine.

To make sure the Surface SDK executables are using the x86 CLR you have to patch them all.

cd "C:\Program Files (x86)\Microsoft SDKs\Surface\v1.0\Tools\GenTag"
for %i in (*.exe) do CorFlags %i /32BIT+ /Force /nologo /UpgradeCLRHeader

cd "C:\Program Files (x86)\Microsoft SDKs\Surface\v1.0\Tools\Simulator"
for %i in (*.exe) do CorFlags %i /32BIT+ /Force /nologo /UpgradeCLRHeader

cd "C:\Program Files (x86)\Microsoft SDKs\Surface\v1.0\Tools\SurfaceStress"
for %i in (*.exe) do CorFlags %i /32BIT+ /Force /nologo

cd "C:\Program Files (x86)\Microsoft Surface\v1.0"
for %i in (*.exe) do CorFlags %i /32BIT+ /Force /nologo

Patching the Sample Applications

This is only needed on a x64 machine.

Modify all projects files (*.csproj) and change the build type from Any CPU to x86.

For example, add the following to the appropriate PropertyGroup tags:

<PlatformTarget>x86</PlatformTarget>

3 Comments

  1. /

    Thanks! All instructions worked very well!

Trackbacks and Pingbacks

  1. Using the Surface SDK with Visual Studio 2010 | Michaël's coding thoughts
  2. Localizing the Microsoft Surface Shell | Michaël's coding thoughts

Comments are closed.