Unable to install managed DLL assembly from MSI Installer - Error 1935 HRESULT=0x800736FD

0

I'm building a managed DLL that is bundled in an MSI along with the appropriately signed catalog. MSI installation fails reporting the assembly name, processorArchitecture, etc. Running MSIEXEC with verbose logging, the following is shown:

MSI (s) (64:DC) [14:31:33:754]: Assembly Error:An HRESULT could not be translated to a corresponding Win32 error code. MSI (s) (64:DC) [14:31:33:785]: Note: 1: 1935 2: {1ADE2A83-E905-4F35-9DD8-61F512CA50E8} 3: 0x800736FD 4: IAssemblyCacheItem 5: Commit 6: BLAHBLAH,version="10.0.62601.0",type="win32",processorArchitecture="x86",publicKeyToken="5f523ae7e6e1b389" MSI (s) (64:DC) [14:31:33:785]: Assembly Error (sxs): Please look into Component Based Servicing Log located at -207342408ndir\logs\cbs\cbs.log to get more diagnostic information. MSI (s) (64:DC) [14:31:33:785]: Note: 1: 2205 2: 3: Error MSI (s) (64:DC) [14:31:33:785]: Note: 1: 2228 2: 3: Error 4: SELECT Message FROM Error WHERE Error = 1935 MSI (c) (7C:1C) [14:31:33:785]: Font created. Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg Error 1935. An error occurred during the installation of assembly 'BLAHBLAH,version="10.0.62601.0",type="win32",processorArchitecture="x86",publicKeyToken="5f523ae7e6e1b389"'. Please refer to Help and Support for more information. HRESULT: 0x800736FD. assembly interface: IAssemblyCacheItem, function: Commit, component: {1ADE2A83-E905-4F35-9DD8-61F512CA50E8} MSI (s) (64:DC) [14:31:48:019]: Note: 1: 2205 2: 3: Error MSI (s) (64:DC) [14:31:48:019]: Note: 1: 2228 2: 3: Error 4: SELECT Message FROM Error WHERE Error = 1709 MSI (s) (64:DC) [14:31:48:019]: Product: BLAHBLAH v10.0.62601.0 -- Error 1935. An error occurred during the installation of assembly 'BLAHBLAH,version="10.0.62601.0",type="win32",processorArchitecture="x86",publicKeyToken="5f523ae7e6e1b389"'. Please refer to Help and Support for more information. HRESULT: 0x800736FD. assembly interface: IAssemblyCacheItem, function: Commit, component: {1ADE2A83-E905-4F35-9DD8-61F512CA50E8} Action ended 14:31:48: InstallFinalize. Return value 3.

Looking at Windows/Logs/CBS.log, I can see:

2014-10-30 14:31:33, Info CSI 0000000c Performing 1 operations; 1 are not lock/unlock and follow: Install (5): flags: 0 tlc: [BLAHBLAH, Version = 10.0.62601.0, pA = PROCESSOR_ARCHITECTURE_INTEL (0), Culture neutral, VersionScope neutral, PublicKeyToken = {l:8 b:5f523ae7e6e1b389}, Type = [l:10{5}]"win32", TypeName neutral, PublicKey neutral]) ref: ( flgs: 00000000 guid: {27dec61e-b43c-4ac8-88db-e209a8242d90} name: [l:0]"" ncdata: [l:62{31}]"C:\Windows\system32\msiexec.exe") thumbprint: [l:128{64}]"c303b9f117203669bdfdbf904a7f1d45e4767da45615a08eff196fb02d093399" 2014-10-30 14:31:33, Error CSI 0000000d@2014/10/30:14:31:33.488 (F) d:\win7sp1_gdr\base\wcp\library\catalog.cpp(263): Error c000038a [Error,Facility=(system),Code=906 (0x038a)] originated in function CCatalog::VerifyCertChainRoot expression: HRESULT_FROM_WIN32((dwError)) [gle=0x80004005] 2014-10-30 14:31:33, Error CSI 0000000e (F) c000038a [Error,Facility=(system),Code=906 (0x038a)] #1131# from CCSDirectTransaction::OperateEnding at index 0 of 1 operations, disposition 0[gle=0xd000038a] 2014-10-30 14:31:33, Error CSI 0000000f (F) 80090352 [Error,Facility=(0009),Code=850 (0x0352)] #1001# from Windows::COM::CComponentStore::InternalTransact(...)[gle=0x80090352] 2014-10-30 14:31:33, Error SXS Transact2 failed with 0x80090352

I've seen numerous report stating that HRESULT 0x800736FD is an internal error and suggests running the Windows System Update Readiness tool. I've done this but it's no different.

There's a report here of someone experiencing the same problem but no response:

https://social.msdn.microsoft.com/forums/windowsdesktop/en-us/5938da72-16a4-46ef-9151-986b4bd6a60b/need-help-in-installing-dll-into-winsxs

I don't think there's anything wrong with the managed DLL since I can manually install it into the GAC using gacutil.

This is driving me bonkers.

wix
windows-installer
.net-assembly
managed
winsxs
asked on Stack Overflow Oct 30, 2014 by Wartortle • edited Oct 30, 2014 by Jester

2 Answers

0

Okay, so after LOTS of trial and error, I eventually found the problem.

My MSI is actually 4 merge modules - an unmanaged C++ DLL that needs to be installed in WinSxS, the corresponding VS2005 run-times (don't ask) and a managed C++ wrapper that needs to be installed in the GAC.

One of the merge modules (the managed C++ wrapper) had the same name as the main MSI so when the error message was reported, I thought (naively) that this was the errant module. Of course, the error message is a bit indiscriminate - it was actually the unmanaged C++ DLL (with a different name) that was failing.

The cause of the failure was extremely trivial - the public key token referenced in the manifest for the DLL was wrong. I had mistakenly put the public key token of the Strong Name Key used for the Managed C++ DLL in there rather than the public key token of the Code Signing Certificate.

Sad to say it was a Schoolboy error although, I'm hardly a Schoolboy.

What's annoying is that the error is quite clearly something that could be reported in a much more sensible manner by the installer tool.

So, if you read this and it saves you lots of time, I'm glad. Alas for me, I've lost days of my life that I can never get back.

WinSxS, GAC, assemblies, manifests, yada, yada, yada. It all seems way, way too complicated and fragile to me. Someone, somewhere is having a right good laugh.

answered on Stack Overflow Nov 4, 2014 by Wartortle
0

I've had nothing but problem with third party merge modules, especially the ones you speak of. Generally it's best to refactor and create a setup.exe bootstrapper/chainer to handle installing those as discrete prerequites. That way they are already there when your MSI installs and not connected to your MSI in anyway.


User contributions licensed under CC BY-SA 3.0