繁体   English   中英

在Windows上的C#中自动检测R.exe的路径

[英]Auto-detect the path to R.exe in c# on Windows

我在c#.NET中有一个Windows窗体应用程序。 从我的应用程序中,我必须调用一些R命令。 在运行R命令之前,必须检查用户计算机上是否已安装R。 我还必须知道R.exe的正确路径。 在大多数具有R最新版本的Windows计算机上,路径为: "C:\\Program Files\\R\\R-3.0.1\\bin\\i386\\Rgui.exe"但是,如您所知,R的版本很多。一些用户使用R 2.15.1,其他用户使用R 3.0.1,依此类推。

是否有一种简单的方法可以从c#.NET猜测用户计算机上R的最新版本?

我的想法是,我的应用程序将尝试自动检测到R的路径,并且仅在未找到R的情况下,它将要求用户手动将路径设置为R。

首先列出 “ C:\\ Program Files \\ R” 中的所有目录 ,然后可以检查是否存在任何版本的文件“ \\ bin \\ i386 \\ Rgui.exe” ,如果存在,则可以选择版本并执行任何操作想做这条路。

System.IO.DirectorySystem.IO.File可能有用。

您可以从注册表中找到所有R应用程序的安装路径,然后遍历所有安装并找到最新版本。

HKLM /软件/ Microsoft / CurrentVersion /卸载

或者,您也可以使用Installer API来获取所有版本R的安装路径。您将需要R installer的产品代码(通常是公开的,也可以从MSI /注册表中获取)。

搜索MsiGetProductInfo

参考: http : //msdn.microsoft.com/en-us/library/aa369558(VS.85).aspx

看看http://rdotnet.codeplex.com/SourceControl/latest#RDotNet.NativeLibrary/NativeUtility.cs,它几乎可以完全满足您的要求(R.dll而不是RGui.exe)。 您将找到功能FindRPath和特定于Windows的FindRPathFromRegistry 如果您也需要定位它们,也有代码可以在Linux和MacOS上找到R库。

编辑:您需要切换到分支“ jperraud”以查看最新代码; 我似乎无法创建直接超链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM