Issue
We've seen a number of people attempt to install Visual Studio 2010 in compatibility mode on Vista and Windows 7. This results in strange behavior, like setup not installing on Vista/Windows 7 and resulting in messages like: Windows XP SP2 is not installed.
How do I run in compatibility mode?
There are 3 ways to enter compatibility mode:
1. Find the Exe, right click on it and choose the properties. Then go to the compatibility tab. You can specify older Operating systems there.
2. On Windows 7, find the Exe, right click on it and choose “Troubleshoot compatibility”.
3. After executing an application, which returns non-0, then you are prompted to re-run in compatibility mode.
Running in compatibility mode for many applications solves the issue of allowing your favorite application to continue running even when your application stops working natively.
Why is running in compatibility mode inappropriate when installing Visual Studio 2010 Beta1?
Visual Studio installs many prerequisites and companion products so you don’t have to search for them and hope that they will work together. One of things we do for our customers is detect the operating system and architecture you have installed and then install different sets of packages based on what the OS is.
When running in compatibility mode, one of the things that happens is that the version of the Operating system is returned masking the real operating system version, so the program believes that it is using a different Operating system than it actually is using.
What results is that our code path might go down a XP SP2 when installing on Vista, which results in package installation failure or blocks, because some packages target a very narrow band of operating systems.
So, first I want to thank all of you who have been coming to my blog for .NET Framework related solutions. I've been sort of quiet on blogging for the past several months, because I transitioned over to Visual Studio 2010 Deployment and have been gaining knowledge and expertise on that product.
Well to be clear, it is about the same only magnitudes more information in size.
With that I will try to post something new to try and want you to help us make Visual Studio 2010 awesome.
Thanks!
Aaron Ruckman
If you see an error like:
[05/20/08,14:05:17] Microsoft .NET Framework 2.0SP1 (CBS): ***ERRORLOG EVENT*** : Error: Installation failed for component Microsoft .NET Framework 2.0SP1 (CBS). MSI returned error code 1058
[05/20/08,14:05:17] Setup.exe: GetGlobalCustomProperty - Property: {BBE1827C-F2FD-4FDA-A6D6-C83B62FFFDCA} - PropertyName: compfailed - Value: 0
Then that is a known issue with your machine having the IIS server turned off and it needs to be turned on. The reason is that some of the ASP.NET updates require the Server to be running during install.
After installing .NET Framework 3.5 (which applies the .NET Framework 2.0 SP1 and 3.0 SP1 Updates) then you can turn the IIS server service back off.
For a more detailed description of how to find this type of error see the following:
When analyzing .NET FX 1603 errors, start with the dd_dotnetfx35install.txt log file.
Search for “1603” in the log.
In your case:
[07/17/07,13:44:29] Microsoft .NET Framework 3.5 'package': ***ERRORLOG EVENT*** : Error: Installation failed for component Microsoft .NET Framework 3.5 'package'. MSI returned error code 1603
Scroll up a few lines and note the name of the MSI log:
[07/17/07,13:44:09] Microsoft .NET Framework 3.5 'package': Enabling MSI log file: C:\DOCUME~1\username\LOCALS~1\Temp\dd_NET_Framework35_MSI69C8.txt
Open that log file.
Search for “return value 3”. This is what typically results in a 1603 error.
Action ended 13:44:25: InstallExecute. Return value 3.
Scroll up a few lines to see the actual error:
07/17/07 13:44:24 DDSet_Error: The Commandline '"C:\WINDOWS\Microsoft.NET\Framework\v3.5\WFServicesReg.exe" /c /v /m /i' returned non-zero value: -2147023838.
In this case, there is more:
DDSet_Warning: CScriptMapsComponent::Initialize m_spAdminBase.CoCreateInstance failed. Error code: 0x80070422
DDSet_Warning: CFxInstaller::SetupScriptMapsIIS6 Failed to initialize IIS6 APIs. Error code: 0x80070422
DDSet_Status: CScriptMapsComponent::Close
DDSet_Error: CFxInstaller::SetupComponents SetupScriptMaps failed. Error code: 0x80070422
Find out what the error code means:
# as an HRESULT: Severity: FAILURE (1), FACILITY_WIN32 (0x7), Code 0x422
# for decimal 1058 / hex 0x422
ERROR_SERVICE_DISABLED winerror.h
# The service cannot be started, either because it is
# disabled or because it has no enabled devices associated
# with it.
# 1 matches found for "-2147023838"
The installation needs the IIS Service running on your machine.
We're looking for smart people for various jobs on the Deployment Technology Team!
You can either submit your resume online, or send it to me directly at aaronru@microsoft<remove>.com and I'll forward it to the right people.
Thanks!
I've received the following type of question a few times and would like to give the answer with some background:
Q. Where is the .NET Framework 3.0 SP1 & 2.0 SP1 for Vista RTM?
A. .NET Framework 3.0 & 2.0 released with Vista as OS Windows Components, which means that they are serviced as any other windows Component. Therefore, the .NET Framework 3.0 & 2.0 Service packages will be officially released as part of the Vista Service packages. When Vista SPX is shipped then .NET Framework 2.0 & 3.0 might also include updates in that service package.
In this case the .NET Framework 3.0 & 2.0 have a service package that will be shipped with Vista SP1. Vista SP1 RC is available now (http://technet.microsoft.com/en-us/windowsvista/bb738089.aspx)
NOTE: The same logic stated for Vista and .NET Framework will also be true for Windows2008 & .NET Framework 2.0 & 3.0, only Windows Server2008 will release with .NET Framework 2.0 SP1 & 3.0 SP1 in the OS.
Installing ENU/Core .NET Framework 3.5 on non-ENU Operating System:
You can install .NET Framework 3.5 on a non-English machine by providing the following command line:
dotnetfx35.exe /LANG:ENU
Installing .NET Framework 3.5 with a single Language package matching the OS:
To install .NET Framework 3.5 with a corresponding Language package, then you will need ot do the following:
1) Download 3.5 web or full redist
a. If full redist then you will need to extract it using the following command
i. “dotnetfx35.exe /x:<path>”
b. If web bootstrapper then you will need to create the following directory, at the same directory level as where you downloaded the web bootstrapper
i. X86
1. wcu\dotNetFramework\dotNetFX35\x86
ii. x64
1. wcu\dotNetFramework\dotNetFX35\x64
iii. ia64
1. wcu\dotNetFramework\dotNetFX35\ia64
2) Download and copy the language package into the appropriate dotnetFX35 directory
a. i.e. if x86 then you would copy the language package into:
i. wcu\dotNetFramework\dotNetFX35\x86
3) Execute the Web or full redist package. The download manager will automatically determine which OS language that you have and install the matching language package with the OS language.
Installing .NET Framework 3.5 with a single language package,which does not match the OS language:
Follow the steps above only for step 3, use the /LANG:<lang> switch from the command line.
Installing .NET Framework 3.5 with multiple Language packages
The general guidance is to install the core .NET Framework with the /LANG:ENU switch and then install the desired language packages.
With .NET Framework 3.5 on Vista or LHS you might get one of the following KBs installed. The following table helps to identify which KB matches what Framework version and which language.
LCID = Language Code ID.
NetFx2.0 SP1 & NetFx3.0 SP1 = These KBs are the representation for the Language enabling packages.
- The English + CORE packages must be present prior to installing an additional language package.
- The non-English KBs are included in the appropriate 3.5 language package.
2.0 & 3.0 RTM Stand Alone Language Pack = These KBs enable Users to install a .NET Framework Language on Vista or LHS when the OS Language package, which contains the 2.0 & 3.0 RTM, is not installed.
- These are included in the 3.5 Language packages and installed as appropriate.
- Note that the 936704 & 936705 are not necessary, as 110806 and 929300 contain all of the relevant files anyway.
|
LCID |
Language |
NetFx2.0 SP1 |
2.0 RTM STAND ALONE LANG Pack |
NetFx3.0 SP1 |
3.0 RTM STAND ALONE LANG Pack |
|
1033 |
English+CORE |
110806 |
936704 |
929300 |
936705 |
|
1041 |
Japanese |
935953 |
936382 |
935952 |
936428 |
|
1031 |
German |
936360 |
936383 |
936406 |
936429 |
|
1036 |
French |
936361 |
936384 |
936407 |
936430 |
|
1028 |
Chinese (Traditional) |
936362 |
936385 |
936408 |
936431 |
|
2052 |
Chinese (Simplified) |
936363 |
936386 |
936409 |
936432 |
|
1042 |
Korean |
936364 |
936387 |
936410 |
936433 |
|
3082 |
Spanish |
936365 |
936388 |
936411 |
936434 |
|
1040 |
Italian |
936366 |
936389 |
936412 |
936435 |
|
1025 |
Arabic |
936367 |
936390 |
936413 |
936436 |
|
1046 |
Brazilian Portuguese |
936368 |
936391 |
936414 |
936437 |
|
2070 |
Portuguese |
936369 |
936392 |
936415 |
936438 |
|
1029 |
Czech |
936370 |
936393 |
936416 |
936439 |
|
1030 |
Danish |
936371 |
936394 |
936417 |
936440 |
|
1043 |
Dutch |
936372 |
936395 |
936418 |
936441 |
|
1035 |
Finnish |
936373 |
936396 |
936419 |
936442 |
|
1032 |
Greek |
936374 |
936398 |
936420 |
936443 |
|
1037 |
Hebrew |
936375 |
936399 |
936421 |
936444 |
|
1038 |
Hungarian |
936376 |
936400 |
936422 |
936445 |
|
1044 |
Norwegian |
936377 |
936401 |
936423 |
936446 |
|
1045 |
Polish |
936378 |
936402 |
936424 |
936447 |
|
1049 |
Russian |
936379 |
936403 |
936425 |
936448 |
|
1053 |
Swedish |
936380 |
936404 |
936426 |
936449 |
|
1055 |
Turkish |
936381 |
936405 |
936427 |
936450 |
I've received the following question enought that I decided it would make a good blog post.
Q. Why does the installation process say that it needs to download XX MB when I've either got the packages locally or if I am using the full redist package?
A. This is really a formality of how we chose to design our process. The download size is really just the amount of package size that will be included total and not what might necessarily be downloaded from the internet. The following are the steps that the process goes through:
- User chooses to install the .NET Framework
- The package determines what is required to install based on a number of factors including OS, Architecture, if the product is already installed.
- Every sub package has an associated size, which it adds up and then displays as the downloadable size.
- Next it looks locally for the packages, if it finds them then it uses them. Otherwise it downloads them from the web.
- Next it installs the queued sub packages in the right order.
The bottom line is that the download size might not have to download anything if it can find the package locally.
One of the .NET Framework 3.0 or 3.5 prerequisite packages requires that the Print Spooler service is running in the "Started" State. If the Print Spooler Service is not running, the .NET Framework 3.0 or 3.5 installation will fail.
To resolve this issue
Start the Print Spooler service before you install the .NET Framework. To do this:
|
1. |
Click Start, point to Settings, click Control Panel, and then double-click Administrative Tools. |
|
2. |
Double-click Services, click to select Services (Local), right-click Print Spooler, and then click Properties. |
|
3. |
Click Start, and then click OK. |
.NET Framework 3.0 SP1 & 3.5 released with a small webdownload, which then manages the installation of .NET Framework across all supported OS and architectures. This Blog will explain what they are and how to use them in your role as an end-user, Administrator and ISV.
For End Users, we expect that you will get the .NET Framework 3.0 SP1 and .NET Framework 3.5 in one of the following ways:
- Downloading it from the links above
- via Windows Update as they become available
- Preinstalled on your box by an OEM like Dell, HP, Gateway, etc.
- Your network administrator might install it for you
- An ISV (application like ATI Catalyst) will install it as a prerequisite for an application that you might want to install.
If you download it yourself, then just go ahead and follow the instructions at the above links.
For ISVs and administrators, you should understand the process of what happens during the download steps. This is what is happening under the covers:
-
It looks to see what you need to install on your machine and makes a list, which generates the total download size, this is displayed in the UI.
-
Then it beings the download process
-
It first looks for each file in the list locally in a known and predetermined location verifying that it has the right package locally, if it exists then it moves to the next one.
-
If it does not exist locally, or if the validation fails on the local package, then it will attempt to download one for you from the internet, securely from Microsoft.
-
After it has a full set of files that match what it thinks it needs then the download manager installs them.
This is very powerful in that now an ISV does not need to carry additional binaries for supported by non-mainline scenarios. For example, an ISV might want to support both x86 & x64 but they know that they will have 80% of their customers on x86. Therefore, they can optimize their redistributable experience in that they carry only the x86 packages, and let the bootstrapper download the x64 packages for the additional 20%. Also, if a package becomes corrupted, then it provides a way to self heal the installation via a download.
For Administrators & ISVs, I've been getting the question frequently lately regarding what happened to the redist packages that we are used to?
In the past we were also asked why do I have to carry everything in the Redist, when I don't need everything for my particular scenario?
We addressed both of these issues of why do I have to carry everything and what happened to the redist packages in this implementation of the download manager.
(Full Admin guides for 3.5 & 3.0 SP1 are in the publishing pipeline, the following is just to whet your appetite)
For 3.0 SP1 see the following blog: http://blogs.msdn.com/aaronru/archive/2007/12/13/creating-net-framework-3-0-sp1-redist.aspx
For 3.5, please wait for the admin guide, which will be published soon.
Step 1. It would be super helpful if you could provide the following information at the beginning of your post:
-
Version of .NET Framework you are trying to install.
-
Where did you get it (web page, path, application that redistributed the framework)
- Is this a pre-release, CTP or beta version? Which? (Beta#, CTP (Month Year), RC, etc)
-
What .NET Framework Patches do you currently have installed?
Step 1. Follow Aaron Stebner's blog: http://blogs.msdn.com/astebner/archive/2007/08/01/4172276.aspx
Step 2. If this is a .NET Framework 3.5 install on Vista then you should run the following tool and post the output of the command: http://blogs.msdn.com/aaronru/archive/2007/11/29/net-framework-3-5-installation-validation-tool.aspx
Step 3. If this is a .NET Framework 3.5 isntall on Vista RTM then you should additionally try the following:
Run the following from an elevated command prompt
1. Winmgmt /verifyrepository
2. If the repository is reported as INCONSISTENT, run “Winmgmt /resetrepository” (if it fails because of service dependency, run “net stop winmgmt” and try again). If the repository is consistent, skip this step.
3. Do “mofcomp C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet.mof” to compile the failed mof.
If you feel the need to completely remove the .NET Framework and Visual Studio from your machines then you should follow the blog: http://blogs.msdn.com/aaronru/archive/2007/12/10/uninstalling-the-visual-studio-2008-rtm-or-rc.aspx
Thanks for taking the time to enhance our product.
If you're having issues installing Visual Studio 2008 RTM and had installed Visual Studio 2008 RC or if you want to remove it. You might want to consider using the following tool, which cleanly removes Visual Studio 2008 RC or RTM.
http://msdn2.microsoft.com/en-us/vs2008/bb968856.aspx
NOTE: this tool does not remove .NET Framework 3.5. You should use the following .NET Framework uninstall tool to do so.
http://blogs.msdn.com/astebner/archive/2007/12/04/6659905.aspx