我正在为我们的组件创建安装包。其中一个先决条件是应在目标机器上安装最小版本为8i的oracle客户端。我怎么能这样做?
我在下面提到
What's the best way to determine which version of Oracle client I'm running?
通过这个我写下面的动作。我试着用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客户端。
如果此工具可用,我将收到以下结果
TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 16-AUG-2
012 06:27:58
从这个结果来看,我正在解析版本并验证它。
这是正确的做法吗?还有其他更好的方法吗?
答案 0 :(得分:0)
我没有更好的答案,但我在我的应用程序中使用了您的解决方案,它正在按预期工作。