Click here to Skip to main content
15,867,308 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have developed one project and in that "Microsoft.Access.Database.Engine.2010"
and "Crystal Reports for .NET Framework 4.0" are two Prerequisites of my project.

I have added "product.xml" file with both of them which will check
if they are not installed then installed it
and if it was installed then skip that particular Prerequisite setup.

Now lest see "Microsoft.Access.Database.Engine.2010"

i am trying install my setup and every time it is installing "Microsoft.Access.Database.Engine.2010"

I have check the log file and found that it is unable to read registry key.'

I am trying install it on windows 10 64 bit.

Log file

Running checks for package 'Microsoft Access Database Engine 2010 (x86 and x64)', phase BuildList
Reading value 'Path' of registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\InstallRoot'
Unable to read registry value

Not setting value for property 'AccessDatabaseEngine'
Reading value 'Path' of registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Common\InstallRoot'
Unable to read registry value

Not setting value for property 'AccessDatabaseEngine_x64'

The following properties have been set for package 'Microsoft Access Database Engine 2010 (x86 and x64)':

Running checks for command 'Microsoft Access Database Engine 2010\AccessDatabaseEngine.exe'
Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'Intel': true

Result of checks for command 'Microsoft Access Database Engine 2010\AccessDatabaseEngine.exe' is 'Bypass'

Running checks for command 'Microsoft Access Database Engine 2010\AccessDatabaseEngine_x64.exe'

Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'AMD64': false

Skipping ByPassIf because Property 'IsInstalled' was not defined

Result of running operator 'ValueEqualTo' on property 'AdminUser' and value 'false': false

Skipping FailIf because Property 'Version9x' was not defined

Result of running operator 'VersionLessThan' on property 'VersionNT' and value '5.00': false

Result of checks for command 'Microsoft Access Database Engine 2010\AccessDatabaseEngine_x64.exe' is 'Install'

'Microsoft Access Database Engine 2010 (x86 and x64)' RunCheck result: Install Needed


What I have tried:

XML
<?xml version="1.0" encoding="utf-8"?>
<Product ProductCode="Microsoft.Access.Database.Engine.2010" 
xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">

<PackageFiles CopyAllPackageFiles="true"> 
   <PackageFile Name="AccessDatabaseEngine.exe" 
	HomeSite="https://download.microsoft.com/download/3/5/C/35C84C36-661A-44E6-9324-8786B8DBE231/AccessDatabaseEngine.exe" /> 

	<PackageFile Name="AccessDatabaseEngine_x64.exe" 
	HomeSite="https://download.microsoft.com/download/3/5/C/35C84C36-661A-44E6-9324-8786B8DBE231/AccessDatabaseEngine_X64.exe" />
</PackageFiles>  

<RelatedProducts> 
   <DependsOnProduct Code="Microsoft.Net.Framework.2.0" />
</RelatedProducts> 
  
  <InstallChecks>
    <RegistryCheck Property="AccessDatabaseEngine" Key="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\InstallRoot" Value="Path"  /> 
    <RegistryCheck Property="AccessDatabaseEngine_x64" Key="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Common\InstallRoot" Value="Path"  /> 
  </InstallChecks>
  
<Commands> 

   <Command PackageFile="AccessDatabaseEngine.exe" 
      Arguments='/passive'> 
    <!-- These checks determine whether the package is to be installed --> 
    <InstallConditions> 
     <!-- ByPass if the Processor is not x86 --> 
     <BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="Intel"/> 
   <!-- ByPass if we have installed --> 
     <BypassIf Property="IsInstalled" Compare="ValueGreaterThan" Value="0" />    
     <!-- Block install on Win95 --> 
     <FailIf Property="Version9x" Compare="VersionLessThan" Value="4.10" String="InvalidPlatformWin9x"/> 
     <!-- Block install on NT 4 or less --> 
     <FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.00" String="InvalidPlatformWinNT"/> 
    </InstallConditions> 
    <ExitCodes> 
     <ExitCode Value="0" Result="Success"/> 
     <ExitCode Value="1641" Result="SuccessReboot"/> 
     <ExitCode Value="3010" Result="SuccessReboot"/> 
     <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /> 
    </ExitCodes> 
   </Command>
   
   <Command PackageFile="AccessDatabaseEngine_x64.exe" 
      Arguments='/passive'> 
    <!-- These checks determine whether the package is to be installed --> 
    <InstallConditions> 
     <!-- ByPass if the Processor is not x64 --> 
     <BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="AMD64"/> 
   <!-- ByPass if we have installed --> 
     <BypassIf Property="IsInstalled" Compare="ValueGreaterThan" Value="0" /> 
     <!-- Block install if user does not have admin privileges --> 
     <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/> 
     <!-- Block install on Win95 --> 
     <FailIf Property="Version9x" Compare="VersionLessThan" Value="4.10" String="InvalidPlatformWin9x"/> 
     <!-- Block install on NT 4 or less --> 
     <FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.00" String="InvalidPlatformWinNT"/> 
    </InstallConditions> 
    <ExitCodes> 
     <ExitCode Value="0" Result="Success"/> 
     <ExitCode Value="1641" Result="SuccessReboot"/> 
     <ExitCode Value="3010" Result="SuccessReboot"/> 
     <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /> 
    </ExitCodes> 
   </Command>

  </Commands> 
  
</Product>
Posted
Updated 22-Sep-21 1:40am

1 solution

It's probably related to the age of the package: Access 2010 is in the era of Windows 7, and access to the registry was tightened up as of Win 8 - partly for security, and partly to reduce the "bloating" of the registry which was becoming silly by that point.
From Win 8 onwards, you required elevation to access / change some registry keys and windows 10 tightened that still further. Windows 11 is likely to continue the theme, and make it even harder to use the registry.

If your setup doesn't know about this - and 2010 Access probably doesn't - then it's going to fail and there isn't a whole load you can do about that, though it may be worth trying to run the installer elevated. It's also worth checking that you are installing a 64 bit version of the engine (or 32 bit if you app is configured for that as you can't mix the types at all).

A better solution would be to update to a newer Access engine and to configure everything as 64 bit.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900