How to install unmanaged shared side-by-side assembly
As a proof of concept I am trying to install dummy DLL as a shared side-by-side assembly. 

I have created a .dll vith embedded version info resource, created manifest and .cat file, and used sxs.dll functionality to InstallAssembly() but this function kept returning 0x800736FD (ERROR_SXS_UNTRANSLATABLE_HRESULT:An HRESULT could not be translated to a corresponding Win32 error code). 

Since this error is totally useless for debugging purposes, I have created a MSI package (according steps from http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/90f09d5b-0c37-47a7-8ff1-11a16e691987 , post from Friday, June 15, 2007 10:25 AM, which closely follow instructions from MSDN http://msdn.microsoft.com/en-us/library/aa374228%28v=vs.85%29.aspx) in hope that it will be more verbose. Although the MSI failed with the same error code in it's log, I was able to extract following from CBS.log file:

    2011-07-26 15:33:17, Info                  SXS    Submitting install transaction
    2011-07-26 15:33:20, Info                  CSI    0000000c Performing 1 operations; 1 are not lock/unlock and follow:
      Install (5): flags: 0 tlc: [My.Test.TestDLL, Version = 1.0.0.1, pA = PROCESSOR_ARCHITECTURE_INTEL (0), Culture neutral, VersionScope neutral, PublicKeyToken = {l:8 b:52205bc0de5a64b8}, 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}]"bad61381a1660c5c7ad3ffd77d358d8aed6286fe97af4bdd7978badbba77edad"
    2011-07-26 15:33:20, Info                  CSI    0000000d Component change list: 
    2011-07-26 15:33:20, Info                  CSI    0000000e Couldn't find the hash of component: My.Test.TestDLL, Version = 1.0.0.1, pA = PROCESSOR_ARCHITECTURE_INTEL (0), Culture neutral, VersionScope neutral, PublicKeyToken = {l:8 b:52205bc0de5a64b8}, Type = [l:10{5}]"win32", TypeName neutral, PublicKey neutral in the catalog [l:192{96}]"\SystemRoot\WinSxS\Catalogs\bad61381a1660c5c7ad3ffd77d358d8aed6286fe97af4bdd7978badbba77edad.cat".

    2011-07-26 15:33:20, Error                 CSI    0000000f@2011/7/26:13:33:20.016 (F) d:\win7sp1_gdr\base\wcp\componentstore\csd_winners.cpp(1302): Error 80092004 [Warning,Facility=FACILITY_NTSSPI,Code=8196 (0x2004)] originated in function CCSDirectTransaction::AddImplicationsToCatalogsAndVerifyComponentHashes expression: (null)
    [gle=0x80004005]
    2011-07-26 15:33:20, Error                 CSI    00000010 (F) 80092004 [Warning,Facility=FACILITY_NTSSPI,Code=8196 (0x2004)] #1770# from CCSDirectTransaction::PrepareForCommit(...)[gle=0x90092004]
    2011-07-26 15:33:20, Error                 CSI    00000011 (F) 80092004 [Warning,Facility=FACILITY_NTSSPI,Code=8196 (0x2004)] #1769# from CCSDirectTransaction::ExamineTransaction(...)[gle=0x90092004]
    2011-07-26 15:33:20, Error                 CSI    00000012 (F) 80092004 [Warning,Facility=FACILITY_NTSSPI,Code=8196 (0x2004)] #1768# from CCSDirectTransaction_IRtlTransaction::ExamineTransaction(...)[gle=0x90092004]
    2011-07-26 15:33:20, Error                 CSI    00000013 (F) CRYPT_E_NOT_FOUND #1644# from Windows::COM::CPendingTransaction::IStorePendingTransaction_Analyze(...)[gle=0x80092004]
    2011-07-26 15:33:20, Error                 SXS    Analyze Transaction failed with 0x80092004

I do not have a clue what could be wrong with the hash, since the content of the manifest (below) looks similar to other manifests from winsxs directory:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <noInheritable></noInheritable>
        <assemblyIdentity type="win32" name="My.Test.TestDLL" version="1.0.0.1" processorArchitecture="x86" publicKeyToken="52205bc0de5a64b8">
        </assemblyIdentity>
        <file name="sxslibrary.dll" hash="ea6075e374b5714b1f7b2f496148de3d56472655" hashalg="SHA1"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>i8bnJcYByeNwEgbp6OSx8nGl/RM=</dsig:DigestValue></asmv2:hash></file>
    </assembly>

Verifying the manifest via mt.exe succeeds. 

Please anyone has any clue what could be the issue or ideas about ways how to further debug this issue?
How to install unmanaged shared side-by-side assembly
===

As a proof of concept I am trying to install dummy DLL as a shared side-by-side assembly. 

I have created a .dll vith embedded version info resource, created manifest and .cat file, and used sxs.dll functionality to InstallAssembly() but this function kept returning 0x800736FD (ERROR_SXS_UNTRANSLATABLE_HRESULT:An HRESULT could not be translated to a corresponding Win32 error code). 

Since this error is totally useless for debugging purposes, I have created a MSI package (according steps from http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/90f09d5b-0c37-47a7-8ff1-11a16e691987 , post from Friday, June 15, 2007 10:25 AM, which closely follow instructions from MSDN http://msdn.microsoft.com/en-us/library/aa374228%28v=vs.85%29.aspx) in hope that it will be more verbose. Although the MSI failed with the same error code in it's log, I was able to extract following from CBS.log file:

    2011-07-26 15:33:17, Info                  SXS    Submitting install transaction
    2011-07-26 15:33:20, Info                  CSI    0000000c Performing 1 operations; 1 are not lock/unlock and follow:
      Install (5): flags: 0 tlc: [My.Test.TestDLL, Version = 1.0.0.1, pA = PROCESSOR_ARCHITECTURE_INTEL (0), Culture neutral, VersionScope neutral, PublicKeyToken = {l:8 b:52205bc0de5a64b8}, 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}]"bad61381a1660c5c7ad3ffd77d358d8aed6286fe97af4bdd7978badbba77edad"
    2011-07-26 15:33:20, Info                  CSI    0000000d Component change list: 
    2011-07-26 15:33:20, Info                  CSI    0000000e Couldn't find the hash of component: My.Test.TestDLL, Version = 1.0.0.1, pA = PROCESSOR_ARCHITECTURE_INTEL (0), Culture neutral, VersionScope neutral, PublicKeyToken = {l:8 b:52205bc0de5a64b8}, Type = [l:10{5}]"win32", TypeName neutral, PublicKey neutral in the catalog [l:192{96}]"\SystemRoot\WinSxS\Catalogs\bad61381a1660c5c7ad3ffd77d358d8aed6286fe97af4bdd7978badbba77edad.cat".

    2011-07-26 15:33:20, Error                 CSI    0000000f@2011/7/26:13:33:20.016 (F) d:\win7sp1_gdr\base\wcp\componentstore\csd_winners.cpp(1302): Error 80092004 [Warning,Facility=FACILITY_NTSSPI,Code=8196 (0x2004)] originated in function CCSDirectTransaction::AddImplicationsToCatalogsAndVerifyComponentHashes expression: (null)
    [gle=0x80004005]
    2011-07-26 15:33:20, Error                 CSI    00000010 (F) 80092004 [Warning,Facility=FACILITY_NTSSPI,Code=8196 (0x2004)] #1770# from CCSDirectTransaction::PrepareForCommit(...)[gle=0x90092004]
    2011-07-26 15:33:20, Error                 CSI    00000011 (F) 80092004 [Warning,Facility=FACILITY_NTSSPI,Code=8196 (0x2004)] #1769# from CCSDirectTransaction::ExamineTransaction(...)[gle=0x90092004]
    2011-07-26 15:33:20, Error                 CSI    00000012 (F) 80092004 [Warning,Facility=FACILITY_NTSSPI,Code=8196 (0x2004)] #1768# from CCSDirectTransaction_IRtlTransaction::ExamineTransaction(...)[gle=0x90092004]
    2011-07-26 15:33:20, Error                 CSI    00000013 (F) CRYPT_E_NOT_FOUND #1644# from Windows::COM::CPendingTransaction::IStorePendingTransaction_Analyze(...)[gle=0x80092004]
    2011-07-26 15:33:20, Error                 SXS    Analyze Transaction failed with 0x80092004

I do not have a clue what could be wrong with the hash, since the content of the manifest (below) looks similar to other manifests from winsxs directory:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <noInheritable></noInheritable>
        <assemblyIdentity type="win32" name="My.Test.TestDLL" version="1.0.0.1" processorArchitecture="x86" publicKeyToken="52205bc0de5a64b8">
        </assemblyIdentity>
        <file name="sxslibrary.dll" hash="ea6075e374b5714b1f7b2f496148de3d56472655" hashalg="SHA1"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>i8bnJcYByeNwEgbp6OSx8nGl/RM=</dsig:DigestValue></asmv2:hash></file>
    </assembly>

Verifying the manifest via mt.exe succeeds. 

Please anyone has any clue what could be the issue or ideas about ways how to further debug this issue?