Как проверить, установлен Oracle Client или нет как предварительное условие для установки компонента

Я создаю установочный пакет для нашего компонента. Одним из Pr-реквизитов является oracle-клиент с минимальной версией 8i, который должен быть установлен на целевой машине. Как я могу это сделать?

я упомянул ниже пост

Какой лучший способ определить, какую версию клиента Oracle я использую?

Имея это, я написал следующее действие. Я пытался проверить с помощью утилиты tnsping.

string result = string.Empty;
                System.Diagnostics.ProcessStartInfo proces = new System.Diagnostics.ProcessStartInfo("tnsping.exe");
                proces.RedirectStandardOutput = true;
                proces.CreateNoWindow = true;
                proces.UseShellExecute = false;
                System.Diagnostics.Process bufor;
                bufor = System.Diagnostics.Process.Start(proces);
                System.IO.StreamReader Output = bufor.StandardOutput;
                bufor.WaitForExit(2000);
                if (bufor.HasExited)
                {
                    result = Output.ReadToEnd();
                    result = result.ToLower();
                    if (result.Contains("64-bit"))
                    {
                        is64BitOracleClient = true;
                    }

                    int verINT = result.IndexOf("version", 0, result.Length);
                    if (verINT != null)
                    {
                        version = result.Substring(verINT + "version".Length + 1, 8);
                        Version installedVersion = new Version(version);
                        Version expectedVersion = new Version("8.1.7.0");
                        if (installedVersion >= expectedVersion)
                        {
                            isVersionMatched = true;
                        }
                    }
                }

здесь я выполняю инструмент tnsping. если я получу исключение в

bufor = System.Diagnostics.Process.Start(proces);

Я пришел к выводу, что Oracle Client не установлен.

Если этот инструмент доступен, я получаю результат ниже

TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 16-AUG-2
012 06:27:58

Исходя из этого, я анализирую версию и проверяю то же самое.

Это правильный подход? Есть ли другой лучший подход?

1 ответ

У меня нет лучшего ответа для вас, но я использую ваше решение в своем приложении, и оно работает, как ожидалось.

Другие вопросы по тегам