Quick setup reverse engineering lesson – finding direct links to VS 2005 Express Edition beta 2 packages

I got a question from a customer asking for direct download locations for each of the VS 2005 Express Edition beta 2 packages.  I replied to that customer with a blog post previously posted by a colleague of mine here.  But as I thought about this question more, I realized that it is probably possible to figure out this information from the publicly available setup packages for the Express Edition beta 2 versions with a little bit of ingenuity and knowledge of setup technologies.  So I decided to try to figure out the download locations myself without using any Microsoft internal web sites or discussion aliases as part of my data gathering.

Here is how I proceeded:

  1. Download the setup package for one of the VS 2005 Express Edition beta 2 packages - I randomly choose C# Express.  Instead of choosing the Run button when I clicked the link, I choose to save the package to my desktop so I can pull it apart and look at the contents.

  2. Extract the contents of the setup package - when I save the package to my desktop I notice that the icon is a familiar one that normally indicates that the package is an IExpress self-extracting EXE.  So I tried to open the package by using IExpress command line parameters to extract but not run the setup - vcssetup.exe /t:c:\temp /c (I know this syntax because the .NET Framework is an IExpress package and I commonly need to extract the MSI to help customers repair broken .NET Framework installations)

  3. Look at the extracted contents - Since there are a bunch of binary and non-binary files in the package, I make an educated guess that there is a generic setup.exe that is used for all Express Editions and there is some kind of data file in the self-extracting package that allows individual products to customize their appearance and/or behavior.  As a result, I started out looking for files that appear to be data files that are used by setup.exe to control the behavior of C# Express setup. 

  4. Look for INI files - I find a file named locdata.ini.  Opening that file in notepad shows a bunch of ComponentName values, so this appears to not be very useful for what I'm looking for (side note - in fact this is a list of strings used in setup UI so that setup can be localized).

  5. Look for files named setup.* - Doing this takes me to a file named setup.sdb.  When I open this in notepad the results are much more promising.  There is a bunch of information about "dialog pages" and even an item named BootstrapperURL at the top that use the syntax fwlink/?LinkId=#####.  Since I noticed that the link I originally downloaded C# Express from was of the form http://go.microsoft.com/fwlink/?LinkId=##### I decide to try copying the BootstrapperURL and building a full URL using the prefix http://go.microsoft.com/.  When I enter that in my browser and choose Go I get a prompt to download vcssetup.exe again.  So I'm getting closer but I'm not quite there yet.

  6. Look deeper into setup.sdb - As I continue to look at the contents of setup.sdb, I find a section named [VS Custom].  I see an entry in there that has the data ComponentFile=baseline.dat.  Previously, I also happened to notice that the setup package I extracted contains a file named baseline.dat, so I decide to look there next.

  7. Look at baseline.dat - This file looks like it has a list of components that are part of C# Express setup or are prerequisites that setup does not install but requires to be present on the machine.  Some of the components sections have URL values that use the syntax fwlink/?LinkId=##### just like the BootstrapperURL value in setup.sdb.  I try to use the same trick as above to build a full URL for the item in [gencomp18] and I'm prompted to download dotnetfx.exe.  So I've found the direct download location for the .NET Framework 2.0 beta 2 package!  I build similar URLs for [vs_setup.dll] for the main C# Express installer, [gencomp30] for MSDN Express and [gencomp31] for SQL Express.

The only remaining trick is how to translate from the "fwlink" to the actual location on the Microsoft download center.  Microsoft uses the concept of an "fwlink" (or forwarding link) to provide a public link that can be changed to a new location via some server-side settings later on.  This is useful to allow users or other Microsoft products to link to locations and always have their links point to the most up-to-date versions of documents or products, even after other products have shipped with these links embedded in the product code or documentation.  I have to admit I'm not much of an expert on networking, so the exact method of translating this is left an exercise for the reader  🙂  If anyone has an easy way to do this, please post a comment and I'll give it a try.


Comments (14)
  1. balajik says:

    Hi Aaron,

    I posted a few queries @


    I request you to kindly solve my queries as i am planning to install VS 2005 beta 2 tomorrow.

    Thank you,

    Balaji K.

  2. Brad C. says:

    I use a tool called wget as my ‘download manager’. It’s a powerful command-line tool of *nix origin used to grab content from HTTP and FTP servers. You can find native Win32 versions at http://space.tin.it/computer/hherold/ (or just google for "wget for windows").

    Given that all the Microsoft fwlink’s are just 302 redirects, you can just hand the URL to wget and watch it forward. Wget is primarily used for downloading though, so if you just want the target of a fwlink, try:

    wget –spider http://go.microsoft.com/?fwlink=#####

    This turns out to be a rather geeky and unnecessary process, though. If you have the fwlink, it will always point to the content, even if the actual location changes. Save the fwlink, don’t worry about the actual target.

  3. balajik says:

    Hi Aaron,

    I am not sure if this is a known issue or if this has been documented anywhere. But, i downloaded VC# Express and VWD Express products from the links given in Hong Gao’s blog. I didn’t use the bootstrapper. Instead i used the entire product.

    When i ran those 2 setup files, i get ‘Error 1308, source file not found’ and it asks me to verify the existence of a host of files in Documents and SettingsAdministratorLocal SettingsTempIXP000.TMP. There are only 2 files – a cab file and a windows installer file in there.

    I kept ignoring those errors and both the products still managed to get installed. Is this a correct installation? Please let me know more about this situation.

    Thanks very much.

  4. Installing from the bootstrapper (e.g. VB Express Bootstrapper http://download.microsoft.com/download/E/1/C/E1C75061-A229-49EA-BD0C-D0A7A22E8BA4/vbsetup.exe) is supported. However, installing from this link http://download.microsoft.com/download/0/5/7/057400B0-2895-4BB8-AE86-0975F066D783/Ixpvb.exe is not supported.

    If you are seeing this error when installing from the bootstrapper as opposed to the other package, please let me know.


  5. balajik says:

    Alright. I guess, i’ll uninstall the 2 express products and then re-install them using the bootstrapper. I’ll get back to you, once i’m done.

    Thank You.

  6. balajik says:


    When i tried to uninstall VCS & VWD express editions using Add/Remove programs, it said that they might have already been removed from my computer and asked me if i want to remove those entries from Add/Remove Programs. I said yes but the fact is that VCSE & VWDE are still installed in my machine! Anyways, i am now uninstalling VCSE using the bootstrapper and it is now downloading the express editon. Let me see what’s my experience from here.

    Balaji K.

  7. balajik says:

    Hi again!

    The bootstrapper successfully uninstalled and reinstalled the express editions. But the files that the bootstrapper downloaded were in fact Ixpvcs.exe and Ixpwd.exe. No change in them except that the bootstrapper didn’t throw up any errors while installing the products. What’s more, even my earlier product activations held good for the new installations.

    Balaji K.

  8. Hi Balaji,

    Just to confirm then, your installations worked correctly when you used the bootstrapper for both VWD and C#, right?

    The bootstrapper downloads ixpvcs.exe and ixpvwd.exe from the same location that Hong provided in her blog post, but the bootstrapper launches those packages with specific command line parameters, so it is not supported for you to download and run them directly to try to install.

    The direct download locations are most useful if you want to create a network share that you can install one of the VS 2005 Express Editions from and not require users to connect to the Microsoft Download Center to retrieve each of the packages. But the direct installation of the files named ixp*.exe are not supported.

  9. balajik says:

    Yes, my installations worked perfectly when i used the bootstrapper for both VWD and C#.

    The only mystery was, after i installed them directly(using Ixpvcs.exe and Ixpwd.exe), i couldn’t uninstall them using add/remove programs. When i tried to do that, it said that they might have already been removed from my computer and asked me if i want to remove those entries. When i said yes, it removed those entries but both VWD and C# express were still installed in my puter. I needed the help of the bootstrapper to uninstall and reinstall them both.

    Thanks for your inputs and explanations!

  10. I’m glad that things are working for you. I am a little surprised that the individual ixp*.exe packages behaved this way though. I will take a look on one of my test machines when I have some time in the next week or so and make sure there is not some kind of bug lurking somewhere in there…

  11. balajik says:

    Yes, i’ve successfully installed VS 2005 beta 2, SQL Server 2005 April CTP and the express editions.

    If and when you manage to test-install the individual ixp*.exe packages, kindly post the results.

    Thank You.

  12. I have heard from a few people (including this customer comment on a previous blog post and a fellow…

  13. Vishnoo Rath says:


      I used Microsoft’s owm Fiddler HTTP debbing proxy which took me directly to the FWD link. Though everybody now has the full URLs to all the direct downloads thanks to Hao’s blog I guess Fiddler can be used, well, to fiddle around in future.


  14. Erik says:

    This can also be caused from something as simple as a pending Windows/MicrosoftUpdate restart entry.  If there's an especially sensitive situation (i.e. anything 64-bit or anything Vista+,) you'll get this right out of the gate.  I just got and found this page which, ironically, I trust, as it's where I found the trusty .NETfx Cleanup Utility!  I have a pending restart and also tried installing C++ 2008 security updates (successfully) at last boot.  However, trying to implement the actual Visual Studio myself with similar updates hanging in the balance + the actual updates either "confused" my OS or, I simply suspect, messed with the order of operations.  I've seen this before, as I admittedly stack-up pending-restart entries and suffer the brunt of it.  It's like registry cleaners, just don't do it.  Same goes for pending restarts.  Just my 2 cents, but take it from someone who's learned the hard way!  BTW, my solution was to install the express C# (with much chagrin.)

Comments are closed.

Skip to main content