Oracle
 sql >> база данни >  >> RDS >> Oracle

В WiX как да тествам за съществуването на ключ в системния регистър (не стойност) за Oracle ODP.Net

Добре, така че благодарение на информацията на Sascha изглежда, че отговорът е „не можете“, като използвате вградените функции на системния регистър на WiX.

Сега също исках този тест да се случи заедно с другите тестове за условия на стартиране, което го прави малко по-труден. Накарането на това да работи ми отне доста време, въпреки че сега е доста просто, сега знам как, така че се надявам това да спести на някой друг същата болка.

Първо създайте свойство във вашия продукт WiX:

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

След това създайте персонализирано действие, за да проверите за ключа и задайте ODPNETINSTALLED на "1", ако съществува. Тук няма да навлизам в компилирането и добавянето на персонализираното действие към инсталатора, но е доста просто, ако използвате Votive във Visual Studio. Кодът за моето персонализирано действие е:

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 означава, че персонализираното действие няма да се задейства по време на инсталирания извън потребителския интерфейс. Въпреки това моят инсталатор трябва да има инсталиран потребителски интерфейс, така че това не е проблем за мен.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Функция NULLIF() в Oracle

  2. Метод за събиране:ПРЕДИШНИ И СЛЕДВАЩИ функции в базата данни на Oracle

  3. Как да видите резултата/изхода на рекурсора в Oracle SQL Developer?

  4. Oracle има ли еквивалент на табличните променливи на SQL Server?

  5. Ляво и дясно се свързват с помощта на знака плюс (+) в Oracle