This is a follow up post to Surface SDK on Vista x64 where we got the original Surface SDK working on the unsupported Vista X64. Last week Microsoft released Service Pack 1 of the SDK and there is an additional tweak that we need to get it going.
The original post was split into 3 sections:
- Patch the MSI and install
- Patch the Simulator and other files
- Configure our projects
Steps 2 and 3 haven’t changed with SP1 (we don’t need to “corflags” the new “stress” tool as it connects to the simulator rather than launching it), so jump over to the original post when you’ve got the SDK installed.
- Surface SDK SP1 (duh!)
- Visual Studio 2008 (for corflags)
- Orca (part of the Windows SDK or just search for it)
- Administrator access to the Vista or Win7 box you’re installing onto.
Step 1 – The MSI
Firstly we need to use Orca to tweak the launch conditions of the MSI. Make sure you’ve installed all of the SDK pre-requisites first, then walk through the following:
- Install Orca (link above, or just search for it).
- Copy the SurfaceSDKWE.msi to somewhere on your hard disk, and make sure that it’s not Read Only.
- Right click on the MSI and choose Edit with Orca. This will trigger a UAC, but it’s software from Microsoft, so you should be ok to trust it
- Select “LaunchCondition” in the left hand list, then select “Install OR NOT VersionNT64″ in the right hand list (see below).
- Press delete and click OK when asked to confirm the row delete.
This is where we got to with the original SDK, but the SP1 install will still fail if we leave it like that. As part of SP1 Microsoft has added automatic updates and automatic error reporting. Unfortunately the exe they call as a custom action doesn’t work on x64 (it looks like it puts registry entries in the wrong place), which causes the install to fail. We could extract the MSI, patch the custom exe with corflags and then run setup, but we won’t do that because:
a) We don’t want automatic updates as they will overwrite our nicely patched exes, and
b) x64 is not a supported platform, so I’m sure Microsoft aren’t particularly interested in error reports!
Instead of that we can just continue with Orca to remove those commands from the installer:
- From Orca, select “InstallExecuteSequence” in the list on the left and remove SetCreateSqmMachineGuid and CreateSqmMachineGuid as before:
- Click Save on the toolbar
Now you can quit Orca and run the msi, which should install just fine. Make sure you also switch off automatic updates and error reporting as follows:
Now the SDK is installed, head over to the original post and follow steps 2 and 3 and you’re all done.
Thanks to JamesK for his workaround comment on the original post.
Update: thanks to Michael Zervos for letting me know that the academic version of the SDK comes in EXE, rather than MSI form. As he points out on his blog, if you keep an eye on your %temp% directory when you run the EXE it will extract the MSI for you to copy and patch.
Update again: Thanks to Robin Sanner for providing details on getting the samples to work:
To get the samples to build and install correctly do the following:
– Edit the configuration properties for the sample solution and create an x86 platform for all projects.
– Edit InstallSamples.bat
– Comment out the lines on either side of the set as follows:
::FOR /F “eol=H tokens=2*” %%A IN (‘REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0 /v IsLogicalSurfaceUnit’) DO SET LogicalTableValue=%%B
::IF %LogicalTableValue%==0×1 SET InstallingOnTable=true
– Change the MSBuildParameters to reference the x86 PlatformName as follows:
SET MSBuildParameters=/p:Configuration=Release;PlatformName=x86 /noconsolelogger /fl /fileLoggerParameters:LogFile=%LogFile%;Append /nologo