VS SDK on Vista

I've finally gotten around to trying out the VS SDK on Vista with UAC turned on.  Here's what I had to do to get the VS SDK to install, and a package to compile and run:

1) Installing VS - fairly straightforward, no surprises

2) Installing VS SDK - the self-extracing exe fails to launch setup.exe and the system pops up an ugly message box indicating that setup.exe can't be started.  Solution: run the self-extracing exe with the '-x' switch and specify a directory to extract to.  Run setup.exe from the specified directory.  You'll need to enter admin credentials in order to complete the setup, but it should be straightforward.

3) VS SDK installs all of its content directly to the Program Files folder and folder is restricted in Vista.  Opening a sample and attempting to build it results in errors about the output directories.

Solution:

a) Copy all of the VisualStudioIntegration\Samples folder to your personal documents folder (on my system it's c:\users\allend\documents).  I placed my copy of the sample code into the Visual Studio 2005 \ Projects \ VSSDKSamples directory. 

Moving the sample files around breaks them because there are relative references to other files (relative means the directories are specified with '..' to move up the directory from the current path).  These references are now broken.  As a matter of fact when you open a sample solution the project will fail to load (you'll get an error message). 

Solution:

b) Right-click on the project file in the Solution Explorer of VS.  Replace all strings like '..\..\..\..\Common' with 'c:\Program Files\Visual Studio 2005 SDK\2006.04\VisualStudioIntegration\Common'.  This will make the references to the files absolute instead of relative.

c) You can do the same with the Overview.xml file that comes with the sample.

d) Try building the sample now.  It should build.  If not, continue to look for relative file paths and fix them up.

Registration is still a problem.  The sample build causes regpkg to run, but it places it's values in a virtual registry location that devenv.exe doesn't actually look at when looking for registered packages.

Solution:

e) Registration - for now you'll have to do it by hand - you can use the /regfile option of regpkg to create the file, then you should be good to go.  Native package will have to do something similar, but there's no tool to create a .reg file out of the rgs data in the native resources.  Once you have a .reg file, remember to run the command prompt (or regedit.exe) as an administrator.  Running as a normal user and importing .reg files causes errors to be reported and registry entires aren't actually put in place.  I did this by spawning a command prompt as Adminstrator in the Vista start menu.

Running:

e) Close the solution and reopen - in the previous open of the solution the VS SDK solution extender didn't work to place the debug information into the sample (for automatically configuring what should happen on F5 - Debug Launch).  Closing and reopening the solution makes the debug info work properly.

f) Get "DevEnv /setup /root Exp" to run after you registered your package by hand.  This will at least get the menus to be recognized for your package.  The easiest way to do this is to touch your .ctc file, getting it to rebuild will trigger the setup step to occur.

I know the instructions above are really involved and there's a bunch of stuff that should be done automatically, but unfortunately the VS SDK for Whidbey wasn't built for this.  Until we make some changes to the tools and samples this is the best I can offer.

Good luck,

Allen