title: Windows Service Installation Error: Error 1001, Unable to get installer types assembly in the C:\Program Files\..\..\xxx.dll assembly.
body: <p>We're pushing a legacy Windows Service that was originally written for Windows 2003 to a Windows 2012 R2 Server for testing, however when we attempt to run the installer .msi, we are receiving the following error:</p>
  
  <pre><code>Error 1001, Unable to get installer types assembly in the C:\Program   Files\..\..\xxx.dll assembly. -&gt; . Unable to load one or more of the requested   types. Retrieve the LoaderExceptions property for more information.
  </code></pre>
  
  <p>It appears that it may be an issue with an Oracle.DataAccess DLL:</p>
  
  <p><a href="https://i.stack.imgur.com/PdWRZ.gif" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/PdWRZ.gif" alt="Oracle Error"></a></p>
  
  <p>The Log Viewer provided this information:</p>
  
  <pre><code>    *** Assembly Binder Log Entry  (7/22/2016 @ 1:54:54 PM) ***
  
  The operation failed.
  Bind result: hr = 0x80070002. The system cannot find the file specified.
  
  Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
  Running under executable  C:\Windows\syswow64\MsiExec.exe
  --- A detailed error log follows. 
  
  === Pre-bind state information ===
  LOG: DisplayName = Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342
   (Fully-specified)
  LOG: Appbase = file:///C:/Windows/syswow64/
  LOG: Initial PrivatePath = NULL
  LOG: Dynamic Base = NULL
  LOG: Cache Base = NULL
  LOG: AppName = MsiExec.exe
  Calling assembly : CTMSRenewalOutboundService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
  ===
  LOG: This bind starts in LoadFrom load context.
  WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
  LOG: No application configuration file found.
  LOG: Using host configuration file: C:\Temp\CFG4155.tmp
  LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
  LOG: Post-policy reference: Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342
  LOG: GAC Lookup was unsuccessful.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess.DLL.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess/Oracle.DataAccess.DLL.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess.EXE.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess/Oracle.DataAccess.EXE.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess.DLL.
  LOG: Assembly download was successful. Attempting setup of file: C:\Program Files\PPD\CTMSOutboundService\Oracle.DataAccess.dll
  LOG: Entering run-from-source setup phase.
  LOG: Assembly Name is: Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342
  ERR: Invalid assembly platform or ContentType in file (hr = 0x8007000b).
  ERR: Run-from-source setup phase failed with hr = 0x8007000b.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess/Oracle.DataAccess.DLL.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess.EXE.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess/Oracle.DataAccess.EXE.
  LOG: All probing URLs attempted and failed.
  
  *** Assembly Binder Log Entry  (7/22/2016 @ 1:54:54 PM) ***
  
  The operation failed.
  Bind result: hr = 0x80070002. The system cannot find the file specified.
  
  Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
  Running under executable  C:\Windows\syswow64\MsiExec.exe
  --- A detailed error log follows. 
  
  === Pre-bind state information ===
  LOG: DisplayName = Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342
   (Fully-specified)
  LOG: Appbase = file:///C:/Windows/syswow64/
  LOG: Initial PrivatePath = NULL
  LOG: Dynamic Base = NULL
  LOG: Cache Base = NULL
  LOG: AppName = MsiExec.exe
  Calling assembly : CTMSRenewalOutboundService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
  ===
  LOG: This bind starts in LoadFrom load context.
  WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
  LOG: No application configuration file found.
  LOG: Using host configuration file: C:\Temp\CFG4155.tmp
  LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
  LOG: Post-policy reference: Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342
  LOG: GAC Lookup was unsuccessful.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess.DLL.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess/Oracle.DataAccess.DLL.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess.EXE.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess/Oracle.DataAccess.EXE.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess.DLL.
  LOG: Assembly download was successful. Attempting setup of file: C:\Program Files\PPD\CTMSOutboundService\Oracle.DataAccess.dll
  LOG: Entering run-from-source setup phase.
  LOG: Assembly Name is: Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342
  ERR: Invalid assembly platform or ContentType in file (hr = 0x8007000b).
  ERR: Run-from-source setup phase failed with hr = 0x8007000b.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess/Oracle.DataAccess.DLL.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess.EXE.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess/Oracle.DataAccess.EXE.
  LOG: All probing URLs attempted and failed.
  
  *** Assembly Binder Log Entry  (7/22/2016 @ 4:01:10 PM) ***
  
  The operation failed.
  Bind result: hr = 0x80070002. The system cannot find the file specified.
  
  Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
  Running under executable  C:\Windows\syswow64\MsiExec.exe
  --- A detailed error log follows. 
  
  === Pre-bind state information ===
  LOG: DisplayName = Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342
   (Fully-specified)
  LOG: Appbase = file:///C:/Windows/syswow64/
  LOG: Initial PrivatePath = NULL
  LOG: Dynamic Base = NULL
  LOG: Cache Base = NULL
  LOG: AppName = MsiExec.exe
  Calling assembly : CTMSRenewalOutboundService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
  ===
  LOG: This bind starts in LoadFrom load context.
  WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
  LOG: No application configuration file found.
  LOG: Using host configuration file: C:\Temp\CFGDA59.tmp
  LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
  LOG: Post-policy reference: Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342
  LOG: GAC Lookup was unsuccessful.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess.DLL.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess/Oracle.DataAccess.DLL.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess.EXE.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess/Oracle.DataAccess.EXE.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess.DLL.
  LOG: Assembly download was successful. Attempting setup of file: C:\Program Files\PPD\CTMSOutboundService\Oracle.DataAccess.dll
  LOG: Entering run-from-source setup phase.
  LOG: Assembly Name is: Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342
  ERR: Invalid assembly platform or ContentType in file (hr = 0x8007000b).
  ERR: Run-from-source setup phase failed with hr = 0x8007000b.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess/Oracle.DataAccess.DLL.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess.EXE.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess/Oracle.DataAccess.EXE.
  LOG: All probing URLs attempted and failed.
  
  *** Assembly Binder Log Entry  (7/22/2016 @ 4:01:10 PM) ***
  
  The operation failed.
  Bind result: hr = 0x80070002. The system cannot find the file specified.
  
  Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
  Running under executable  C:\Windows\syswow64\MsiExec.exe
  --- A detailed error log follows. 
  
  === Pre-bind state information ===
  LOG: DisplayName = Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342
   (Fully-specified)
  LOG: Appbase = file:///C:/Windows/syswow64/
  LOG: Initial PrivatePath = NULL
  LOG: Dynamic Base = NULL
  LOG: Cache Base = NULL
  LOG: AppName = MsiExec.exe
  Calling assembly : CTMSRenewalOutboundService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
  ===
  LOG: This bind starts in LoadFrom load context.
  WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
  LOG: No application configuration file found.
  LOG: Using host configuration file: C:\Temp\CFGDA59.tmp
  LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
  LOG: Post-policy reference: Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342
  LOG: GAC Lookup was unsuccessful.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess.DLL.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess/Oracle.DataAccess.DLL.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess.EXE.
  LOG: Attempting download of new URL file:///C:/Windows/syswow64/Oracle.DataAccess/Oracle.DataAccess.EXE.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess.DLL.
  LOG: Assembly download was successful. Attempting setup of file: C:\Program Files\PPD\CTMSOutboundService\Oracle.DataAccess.dll
  LOG: Entering run-from-source setup phase.
  LOG: Assembly Name is: Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342
  ERR: Invalid assembly platform or ContentType in file (hr = 0x8007000b).
  ERR: Run-from-source setup phase failed with hr = 0x8007000b.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess/Oracle.DataAccess.DLL.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess.EXE.
  LOG: Attempting download of new URL file:///C:/Program Files/PPD/CTMSOutboundService/Oracle.DataAccess/Oracle.DataAccess.EXE.
  LOG: All probing URLs attempted and failed.
  </code></pre>
  
  <p>I made sure to try both: </p>
  
  <ol>
  <li>Copying a local copy of Oracle.DataAccess.DLL </li>
  <li>Using a reference to the GAC for Oracle.DataAccess.DLL</li>
  </ol>
  
  <p>However neither seemed to work.</p>
  
  <p>We have deployed several other Windows Services that refer to this DLL, and had no issues. </p>
  
  <p>Thanks.</p>