Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 341929
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 12, 20262026-05-12T10:45:17+00:00 2026-05-12T10:45:17+00:00

More specifically I want to test whether Oracle ODP.Net is installed on a machine.

  • 0

More specifically I want to test whether Oracle ODP.Net is installed on a machine. I want to do this by testing for the HKLM\SOFTWARE\ORACLE\ODP.NET registry key.

The actual values used by ODP.Net are stored in HKLM\SOFTWARE\ORACLE\ODP.NET\2.111.6.20 however I assume that this lower level key’s name will change as updates are released by Oracle.

I have tried the following which fails, possibly because the (Default) value doesn’t really exist or possibly because it is null (I’m not sure exactly how it’s represented in the registry).

<Property Id="ORACLE_ODPNET">
  <RegistrySearch Id="ODPNET_RegKey" Type="raw" Root="HKLM" Key="SOFTWARE\ORACLE\ODP.NET" Name="(Default)"/>
</Property>
<Condition Message="This setup requires ODP.Net to be installed.">
  Installed OR ORACLE_ODPNET
</Condition>

So any of the following would be helpful to me:

  • A way to search for a registry key
    with no values under it.
  • A way to search for a registry value
    using a path containing wildcards
  • A better way to test for ODP.Net
    being installed
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-12T10:45:17+00:00Added an answer on May 12, 2026 at 10:45 am

    OK, so thanks to Sascha’s information it seems that the answer is “you can’t” using the built-in WiX registry functions.

    Now I also wanted this test to happen along with the other launch condition tests which makes it a bit harder. Getting this to work has taken me quite a while although it’s fairly simple now I know how, so hopefully this will save someone else the same pain.

    First create a property inside your WiX Product:

    <Property Id="ODPNETINSTALLED">0</Property>
    

    Next create a custom action to check for the key and set ODPNETINSTALLED to “1” if it exists. I’m not going to go into compiling and adding the custom action to the installer here but it’s fairly simple if you use Votive in Visual Studio. The code for my custom action is:

    using Microsoft.Deployment.WindowsInstaller;
    using Microsoft.Win32;
    
    namespace WiXCustomAction
    {
      public class CustomActions
      {
        [CustomAction]
        public static ActionResult CheckOdpNetInstalled(Session xiSession)
        {
          xiSession.Log("Begin CheckOdpNetInstalled");
    
          RegistryKey lKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\ORACLE\ODP.Net");
    
          xiSession["ODPNETINSTALLED"] = lKey == null ? "0" : "1";
    
          return ActionResult.Success;
        }
      }
    }
    

    Now you need to register and schedule the action, because I wanted the warning to appear along with my other launch conditions I had to add it to the InstallUISequence element:

    <Binary Id="WiXCustomAction.dll" SourceFile="$(var.WiXCustomAction.TargetDir)$(var.WiXCustomAction.TargetName).CA.dll" />
    <CustomAction Id="CheckOdpNet" BinaryKey="WiXCustomAction.dll" DllEntry="CheckOdpNetInstalled" Execute="immediate" />
    <InstallUISequence>
      <Custom Action="CheckOdpNet" Before="LaunchConditions">NOT Installed</Custom>
    </InstallUISequence>
    

    Finally add a launch condition to check the property:

    <Condition Message="!(loc.OracleOdpCondition)">
      Installed OR ODPNETINSTALLED="1"
    </Condition>
    

    Note that I believe that scheduling in InstallUISequence means the custom action won’t be fired during non-UI installs. However, my installer must have UI install so it’s not an issue for me.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

http://developer.yahoo.com/yui/button More specifically, I want radio buttons. that can be checked/unchecked.
More specifically, does NDK have a complete STL implementation. We're looking at this for
More specifically, I was using homebrew to install MySQL, and I got this error:
In .Net (VB more specifically, but that doesn't really matter), is there a way
I want to look more into the workings of Android. More specifically I want
I want to add methods (more specifically: method aliases) automatically to Python subclasses. If
I want to generate a diff between to revisions of text (more specifically, Markdown-formatted
I want to personalize the JXDatePicker. More specifically I want to create an own
I want to connect to a MySQL server via SSL. More specifically, I want
More specifically I want to edit the Settings.apk and add more options. I'm unsure

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.