Thoughts about setup and deployment issues, WiX, XNA, the .NET Framework and Visual Studio
All postings are provided AS IS with no warranties, and confer no rights. Additionally, views expressed herein are my own and not those of my employer, Microsoft.
Hey all, first off I want to apologize for not posting anything in a couple of weeks. I have had a couple of mini-vacations and been wrapped up with some other stuff, but I'm back now! I've been working with some Product Support folks I know to turn some documents I wrote for internal troubleshooting into knowledge base articles, and I decided that I wanted to go ahead and post some of the information here so it would be available sooner rather than later. The first installment is some detailed information about the dreaded 1935 (or 2908) error that sometimes happens when trying to install the .NET Framework or other MSI-based products that install managed assemblies to the GAC. This is a long post, but hopefully with some useful info. Let me know if you see any scenarios not covered by this information or have any questions....
1935 Errors in Setup
Abstract
The following document describes causes of 1935 errors during .NET Framework, J# redistributable package, language pack, or Visual Studio setup. It also explains how to diagnose the root cause of a 1935 error and workaround or fix the error.
Introduction
A 1935 error is one of the most common problems that can prevent a user from being able to install the .NET Framework, J# redistributable package, Visual Studio or any other application that uses the Windows Installer MSIAssembly and MSIAssemblyName tables to install assemblies.
In general, this error means that Windows Installer encountered an error while trying to install assemblies to the Global Assembly Cache (GAC) or the Win32 GAC (WinSxS). This error is considered fatal and causes setup to fail and initiate rollback.
If the setup is run in UI mode, the user will see a message box indicating that a 1935 error occurred, and it will list the HRESULT and the Windows Installer component GUID of the assembly that caused the error. If the setup is run in silent mode, the user will see no visible error. In both cases, more detailed information about the error can be found in the Windows Installer verbose log file.
Affected Products
· .NET Framework 1.0
· .NET Framework 1.1
· .NET Framework 1.1 language packs
· Visual J# .NET redistributable 1.1
· Visual J# .NET redistributable 1.1 language packs
· Visual Studio .NET 2002 (all versions)
· Visual Studio .NET 2003 (all versions)
Finding log information for 1935 errors that occur during setup
Where to find the log files
In order to diagnose the cause of a 1935 error, it is first necessary to locate information in the Windows Installer verbose log. If the error occurred during Visual Studio setup or during the .NET Framework or J# redistributable setups that are run as a part of Visual Studio Prerequisites (or Windows Component Update) setup, verbose logging is enabled by default. The log files vsmsilog*.txt, netfx.log, or jsredistmsi.log in %temp% will provide the necessary information, depending on which product’s setup failed.
If the error occurs during standalone setup for the .NET Framework, .NET Framework SDK or J# redistributable package setup, it will be necessary to rerun the failing setup with an extra command line parameter to enable Windows Installer verbose logging in order to produce a log file with the necessary information to debug the failure. To enable verbose logging, rerun the setup with the following command line syntax:
Product
Command line syntax
Log file location
.NET Framework
dotnetfx.exe /c:”install.exe /l”
%temp%\netfx.log
.NET Framework SDK
setup.exe /c:”install.exe /l”
%temp%\netfxsdk.log
.NET Framework Language Pack
langpack.exe /c:”inst.exe /l”
%temp%\langpackmsi.log
J# Redistributable Package
vjredist.exe /c:”inst.exe /l”
%temp%\jsredistmsi.log
J# Redistributable Package Language Pack
Vjredist-LP.exe /c:”inst.exe /l”
Note: The log file location can be controlled by passing a full path after the /l switch to install.exe or inst.exe. The locations listed in the table are the default locations if no path is provided.
Where to find error information in the log file
To pinpoint the cause of a 1935 error, search for the string return value 3 in a verbose Windows Installer log file. This will show the exact point in which setup failed and initiated a rollback. The following is an example of the information written to a Windows Installer verbose log file in the case of a 1935 error:
Error 1935.An error occured during the installation of assembly component {7D4B5591-4C80-42BB-B0E5-F2C0CEE02C1A}. HRESULT: -2146234301. assembly interface: IAssemblyCacheItem, function: Commit, assembly name: Microsoft.Vsa.Vb.CodeDOMProcessor,Version="7.0.5000.0", PublicKeyToken="b03f5f7f11d50a3a", Culture="neutral",FileVersion="7.10.3052.4", ProcessorArchitecture="neutral"
In this example, the assembly named Microsoft.Vsa.Vb.CodeDOMProcessor.dll failed to install properly due to an error with HRESULT value -2146234301.
List of causes of 1935 errors and their HRESULT values
There are many different underlying causes of a 1935 error, each represented by a different HRESULT. Once you locate the information in the Windows Installer verbose log file indicating which assembly is causing the error and what the HRESULT of the error is, you can use the table below to determine more specific information about the cause:
Return type
Return code
HRESULT
Description of error
TYPE_E_DLLFUNCTIONNOTFOUND
0x8002802F
-2147319761
Function not defined in specified DLL
ERROR_ACCESS_DENIED
0x7FF8FFFB
-2147024891
Access is denied
COR_E_MODULE_HASH_CHECK_FAILED
0x80131039
-2146234311
The check of the module's hash failed
FUSION_E_REF_DEF_MISMATCH
0x80131040
-2146234304
The located assembly's manifest definition does not match the assembly reference
FUSION_E_INVALID_PRIVATE_ASM_LOCATION
0x80131041
-2146234303
The private assembly was located outside the app-base directory
FUSION_E_ASM_MODULE_MISSING
0x80131042
-2146234302
A module specified in the manifest was not found
FUSION_E_UNEXPECTED_MODULE_FOUND
0x80131043
-2146234301
Modules which are not in the manifest were streamed in
FUSION_E_PRIVATE_ASM_DISALLOWED
0x80131044
-2146234300
A strongly-named assembly is required
FUSION_E_SIGNATURE_CHECK_FAILED
0x80131045
-2146234299
The check of the signature failed
FUSION_E_DATABASE_ERROR
0x80131046
-2146234298
An unexpected error was encountered in the Assembly Cache database
FUSION_E_INVALID_NAME
0x80131047
-2146234297
The given assembly name or code-base is invalid
FUSION_E_CODE_DOWNLOAD_DISABLED
0x80131048
-2146234296
HTTP download of assemblies has been disabled for this app-domain
FUSION_E_UNINSTALL_DISALLOWED
0x80131049
-2146234295
Uninstall of given assembly is not allowed
FUSION_E_NGEN_DEPENDENCY_NOT_FOUND
0x80131050
-2146234288
One of the native image dependencies cannot be found
FUSION_E_NGEN_INDEX_CORRUPTED
0x80131051
-2146234287
ngen index corrupted
NOTE: The Windows Installer team created separate error codes for 3 of the above return types starting with the version that shipped with Windows Server 2003. The following are the new error codes and the return types they correspond to in Windows Server 2003 and in versions of Windows Installer greater than 2.0 (all other return types from the above table continue to be represented by error code 1935):
Error code
Return Type
1936
1937
1938
Resolving 1935 errors that occur during setup
Most of the above HRESULT values in the table of 1935 errors above indicate some kind of setup authoring problem, and they require that the MSI package or some of the files in the package be patched and repackaged. All return types that begin with FUSION fit into this category.
1935 errors with HRESULT -2147319761 (function not defined in specified dll)
The most common source of a 1935 error is HRESULT -2147319761 (which means that a function is not defined in specified DLL). This error is typically caused by a mismatch or incompatibility between the version of mscoree.dll in the Windows system directory and the version needed by the product being installed. Often this can occur if a user has a previous beta version or technology preview build of the .NET Framework installed on their machine (even if they then uninstall it).
There are several possible ways to workaround this type of 1935 error. The workarounds depend on the product being installed and the OS that the product is being installed on. Refer to the sections below for more details for the individual products.
This workaround applies to all versions of the .NET Framework.
The following steps will fix most cases of a 1935 error with HRESULT -2147319761 on operating systems that do not contain the .NET Framework as part of the operating system (applies to Windows 98, Windows Me, Windows NT 4, Windows 2000, and Windows XP except as noted below):
Because the .NET Framework ships as part of the OS for Windows XP Tablet PC Edition, Windows XP Media Center Edition and Windows Server 2003, it is dangerous to delete mscoree.dll from the system directory because it can affect OS functionality. In some cases, it is impossible to delete this file because it is under system file protection. The following steps will fix most cases of a 1935 error with HRESULT -2147319761 on these OS types:
NOTE: This error should not ever be seen for .NET Framework v1.1 on Windows Server 2003 because .NET Framework v1.1 shipped as part of the operating system, and the Windows Installer package for this version should block if a user attempts to install it on this OS. This error should also not ever be seen for .NET Framework v1.0 on Windows XP Tablet PC or Media Center editions because .NET Framework v1.0 shipped as part of the OS.
J# Redistributable Package, Language Packs, and Visual Studio
In most cases, a 1935 error with HRESULT -2147319761 during installation of the J# redistributable package, .NET Framework or J# redistributable package languages packs, or Visual Studio will require a repair of the highest version of the .NET Framework currently installed on the machine.
If you have the .NET Framework installed via a Windows Installer MSI package, you can perform the following steps to repair the .NET Framework:
If you have the .NET Framework installed as part of the operating system and find that it needs to be repaired, you should first try the following steps:
If these steps fail, you may need to rerun OS setup to trigger a repair of the entire .NET Framework.
What to do if the above troubleshooting steps do not work
In some cases, the 1935 error with HRESULT -2147319761 can be caused by orphaned registry keys from a different version of the .NET Framework, and replacing mscoree.dll or repairing the .NET Framework will not fix the error. In these cases, try to look in the registry key HKLM\Software\Microsoft\.NETFramework and look for any sub-keys or values containing version numbers of previous builds of the .NET Framework. If any are present, rename or delete them, then try to rerun the previously failing setup.
In addition if you are trying to install the .NET Framework v1.0, delete the following registry keys and any sub-keys and values, if present:
· HKLM\Software\Microsoft\NET Framework Setup\Full
· HKLM\Software\Microsoft\NET Framework Setup\Product
NOTE: Be very careful when directly modifying the registry in this way, particularly on operating systems where the .NET Framework ships as part of the OS. It is always recommended to backup your registry prior to making direct modifications to it so that you can roll back to a known state.
If there are no orphaned registry keys or deleting orphaned keys did not fix the problem, it may be necessary to completely uninstall and reinstall the highest version of the .NET Framework on the machine. This can be done by locating the entry in the Add/Remove Programs control panel applet and choosing to uninstall, then reinstalling from the original source.
If uninstalling and reinstalling also does not work, it may be necessary to perform a manual removal of the highest version of the .NET Framework on the machine.
NOTE: Manual removal is not recommended and can be very dangerous if the .NET Framework shipped as part of the operating system. In these cases, it is recommended to repair the OS by rerunning OS setup.
Additional Information
· http://support.microsoft.com/default.aspx?scid=kb;en-us;308096
· http://support.microsoft.com/default.aspx?scid=kb;en-us;824643
· http://support.microsoft.com/default.aspx?scid=kb;en-us;830646
· http://support.microsoft.com/default.aspx?scid=kb;en-us;839547
· http://support.microsoft.com/default.aspx?scid=kb;en-us;872904
Hi Brute - I would suggest first trying the steps listed at http://blogs.msdn.com/astebner/archive/2005/10/11/479928.aspx. If that doesn't help, you can use the steps at http://blogs.msdn.com/astebner/archive/2005/03/29/403575.aspx to gather a verbose log file from setup, and you can send it to me at Aaron.Stebner (at) microsoft (dot) com and I'll try to take a look and see if I can figure anything out.
Hope this helps!
I have same problem with LuisP. I have installed MSXML MSI. It did not work. Furthermore i have tried msconfig way to solve problem but it did not wor,k too. What is problematical i don't know. I have framework updates on windows update website. May it framwork problem? I am going to update it.
Thanks.
Visual Studio 2005 SP1 Troubles: 2908 error
PingBack from http://rohand.com/2007/03/11/enterprise-architect/
Question: I am attempting to create an MSI-based setup for my application. This application needs to
A while back, I posted an article describing causes of many types of 1935 errors that have been seen
PingBack from http://msdnrss.thecoderblogs.com/2007/06/13/possible-cause-of-1935-error-with-hresult-0x8002802f/
PingBack from http://www.freesoft-board.to/f58/office-install-problem-236421.html#post1865686
I am getting the following error when i am trying to GAC one of the .net assemblies using WIX.
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2835. The arguments are: ErrorIcon, ErrorDialog,
Error 1935. An error occurred during the installation of assembly 'AssemblyLoader,version="14.0.0.0",culture="neutral",publicKeyToken="31BF3856AD364E35",processorArchitecture="MSIL"'. Please refer to Help and Support for more information. HRESULT: 0x80131043. assembly interface: IAssemblyCacheItem, function: Commit, component: {A96229E0-58B9-4C1B-9A62-1DA98FA7A9A2}
MSI (s) (B0:90) [17:38:13:441]: Product: ExTest -- Error 1935. An error occurred during the installation of assembly 'AssemblyLoader,version="14.0.0.0",culture="neutral",publicKeyToken="31BF3856AD364E35",processorArchitecture="MSIL"'. Please refer to Help and Support for more information. HRESULT: 0x80131043. assembly interface: IAssemblyCacheItem, function: Commit, component: {A96229E0-58B9-4C1B-9A62-1DA98FA7A9A2}
Action ended 17:38:13: InstallFinalize. Return value 3.
I am able to successfully GAC the same assembly using gacutil.exe. any idea why I can’t do it using MSI?
Thanks in advance!
Hi NKiranKumar - The error code you are getting is 0x80131043. According to the chart at the top of this blog post, it means "Modules which are not in the manifest were streamed in." This most likely means that your assembly component contains other files that are not a part of this assembly. You will need to double check your WXS file and make sure that you are only installing one assembly per component (unless the assembly consists of multiple files and is a multi-module assembly).
If you have any trouble figuring out what to change to fix this, you can send me your WXS file and I will try to take a look. You can send it to Aaron.Stebner (at) microsoft (dot) com.
Hi Aaron!
I have been trying desperately to install VS 2005 Pro for days now, but no success!
I am getting RESULT -2147023293, during installation with the following error:
during the installation of assembly 'Microsoft.VC80.ATL,type="win32",version="8.0.50727.42",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="amd64"'
I previously had VS installed, but i removed everything using tools downloaded from Microsoft!
Any ideas why this is happening!?
i checked c:\windows\winsxs and found the following:
- x86_microsoft.vc80.atl_1fc8b3b9a1e18e3b_8.0.50727.42_none_dc990e4797f81af1
- x86_microsoft.vc80.atl_1fc8b3b9a1e18e3b_8.0.50727.762_none_11ecb0ab9b2caf3c
if it makes any difference...
More info about my problem can be found at http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2417626&SiteID=1&mode=1
Thanks!
Hi Guy007 - I’m very sorry for the hassle this issue is causing for you.
This error that you are getting means “The referenced assembly is not installed on your system.” On Windows Vista, this means that there is something wrong with the OS component store. I haven’t been able to find a good solution for fixing a system that has gotten into this state yet though. In the past I’ve suggested trying the steps listed at http://blogs.msdn.com/astebner/archive/2007/03/26/how-to-repair-the-net-framework-2-0-and-3-0-on-windows-vista.aspx, but it hasn’t been helpful in most cases.
There might also be some information in the file c:\windows\logs\cbs\cbs.log that could help troubleshoot this error. If you’d like to zip and send me that log file, I can take a look and see if I can figure anything out to help in this scenario.
If none of the above help, you will likely need to repair/re-install your Windows Vista OS to resolve this issue.
hi.. can you help with this?
OS-> Vista 32bit..
thanks.. i have no idea.. nothing works yet
Product: VC Runtimes MSI -- Error 1935.An error occurred during the installation of assembly 'Microsoft.VC90.ATL,version="9.0.21022.8",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="x86",type="win32"'. Please refer to Help and Support for more information. HRESULT: 0x8007054F. assembly interface: IAssemblyCacheItem, function: Commit, component: {76C3F0F6-9B9D-35DA-81C6-CA8A88CC93CA}
Hi JimSelf - I'm sorry for the hassle that this issue is causing for you. The error code 0x8007054F is a generic error that means "an internal error occurred." Since this is happening on a Windows Vista system, this type of error will result in a more detailed error message being logged to the file c:\windows\logs\cbs\cbs.log. It might help to search for this error code in this cbs.log file and see if it helps narrow down the root cause further.