Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

वाईएक्स में मैं Oracle ODP.Net के लिए रजिस्ट्री कुंजी (मान नहीं) के अस्तित्व के लिए कैसे परीक्षण करूं?

ठीक है, तो साशा की जानकारी के लिए धन्यवाद ऐसा लगता है कि उत्तर अंतर्निहित वाईएक्स रजिस्ट्री फ़ंक्शन का उपयोग करके "आप नहीं कर सकते" है।

अब मैं यह भी चाहता था कि यह परीक्षण अन्य लॉन्च कंडीशन परीक्षणों के साथ हो, जो इसे थोड़ा कठिन बना देता है। इसे काम करने में मुझे काफी समय लगा है, हालांकि अब यह काफी सरल है, मुझे पता है कि कैसे, इसलिए उम्मीद है कि यह किसी और को उसी दर्द से बचाएगा।

सबसे पहले अपने वाईएक्स उत्पाद के अंदर एक प्रॉपर्टी बनाएं:

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

इसके बाद कुंजी की जांच करने के लिए एक कस्टम क्रिया बनाएं और ODPNETINSTALLED को "1" पर सेट करें यदि यह मौजूद है। मैं यहां इंस्टॉलर को कस्टम एक्शन को संकलित करने और जोड़ने में नहीं जा रहा हूं, लेकिन यदि आप विजुअल स्टूडियो में वोटिव का उपयोग करते हैं तो यह काफी आसान है। मेरी कस्टम कार्रवाई के लिए कोड है:

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;
    }
  }
}

अब आपको कार्रवाई को पंजीकृत करने और शेड्यूल करने की आवश्यकता है, क्योंकि मैं चाहता था कि चेतावनी मेरी अन्य लॉन्च शर्तों के साथ दिखाई दे, मुझे इसे इंस्टॉल में जोड़ना पड़ाUI अनुक्रम तत्व:

<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>

संपत्ति की जांच के लिए अंत में एक लॉन्च शर्त जोड़ें:

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

ध्यान दें कि मेरा मानना ​​​​है कि InstallUISequence में शेड्यूलिंग का अर्थ है कि गैर-UI इंस्टॉल के दौरान कस्टम कार्रवाई को सक्रिय नहीं किया जाएगा। हालांकि, मेरे इंस्टॉलर के पास UI इंस्टॉल होना चाहिए, इसलिए यह मेरे लिए कोई समस्या नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. चूंकि SQL सर्वर में पैकेज नहीं होते हैं, प्रोग्रामर इसके आसपास जाने के लिए क्या करते हैं?

  2. Oracle UTL_SMTP:Oracle वॉलेट प्रमाणीकरण का उपयोग करके अनुलग्नक उदाहरण के साथ मेल भेजें

  3. एक कॉलम में दोहराए जाने वाले मान

  4. मैं पैरामीटर मानों के साथ Oracle संग्रहीत कार्यविधि कॉल को कैसे लॉग/ट्रेस करूं?

  5. हाइबरनेट में आईडी उत्पन्न करने के लिए मौजूदा Oracle अनुक्रम का उपयोग कैसे करें?