다음을 통해 공유


Installation of an MSI package shows "Assembly Error: The assembly is built by a runtime newer than the currently loaded runtime, and cannot be loaded." error

While working on a customer case involving a Windows installer based package, we came across an interesting issue that was preventing the installation of the MSI package on a particular computer.

The setup failed with the following error message that we captured from a verbose log.

Error message: Assembly Error: The assembly is built by a runtime newer than the currently loaded runtime, and cannot be loaded.

Log snippet:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

MSI (s) (B4:98) [00:42:12:401]: Executing op: SetTargetFolder(Folder=C:\Program Files (x86)\)

MSI (s) (B4:98) [00:42:12:401]: Executing op: SetSourceFolder(Folder=1\ProgramF\boziguka\|Program Files\Global Assembly Cache\)

MSI (s) (B4:98) [00:42:12:401]: Executing op: ChangeMedia(,MediaPrompt=Please insert the disk: [ProductName] ,MediaCabinet=Cabs.m4,BytesPerTick=32768,CopierType=2,ModuleFileName=C:\Windows\Installer\30895a.msi,,,,,IsFirstPhysicalMedia=1)

MSI (s) (B4:98) [00:42:12:401]: Executing op: AssemblyCopy(SourceName=nobzwco5.dll|CustomerPrivate.dll,SourceCabKey=CustomerPrivate.dll.A15E27FB_AF96_4B01_A086_134C0E9A760B,

DestName=CustomerPrivate.dll,Attributes=512,FileSize=108544,PerTick=32768,,VerifyMedia=1,,,,,ComponentId={20D5E9E9-8110-45C3-9320-DA65098CBBA9},IsManifest=1,,,AssemblyMode=0,)

MSI (s) (B4:98) [00:42:12:401]: Source for file 'CustomerPrivate.dll.A15E27FB_AF96_4B01_A086_134C0E9A760B' is compressed

InstallFiles: File: CustomerPrivate.dll,  Directory: ,  Size: 108544

MSI (s) (B4:98) [00:42:12:401]: Note: 1: 2360

MSI (s) (B4:98) [00:42:12:401]: Note: 1: 2360

MSI (s) (B4:98) [00:42:12:401]: Note: 1: 2360

MSI (s) (B4:58) [00:42:12:651]: Assembly Error:The assembly is built by a runtime newer than the currently loaded runtime, and cannot be loaded.

MSI (s) (B4:58) [00:42:12:667]: Note: 1: 1935 2:  3: 0x8013101B 4: IStream 5: Commit 6: 

MSI (s) (B4:98) [00:42:12:667]: Note: 1: 1304 2: CustomerPrivate.dll

DEBUG: Error 2835:  The control ErrorIcon was not found on dialog ErrorDialog

Internal Error 2835. ErrorIcon, ErrorDialog

Error 1304. Error writing to file: CustomerPrivate.dll.  Verify that you have access to that directory.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

On further investigation, we found that we were getting the error message on a machine that only had .NET Framework 3.5 SP1, where the runtime is still at 2.0 version.

Later, we also found that the component that is installing the DLL file had the following condition

MsiNetAssemblySupport > "2.0"

This means, the application needed a .Net runtime version greater than 2.0 to be installed prior to running this setup package.

Resolution: Installing .NET Framework 4.0 fixed this issue.

Further reference:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370325(v=vs.85).aspx

 

Content By : Keshav Jain.