繁体   English   中英

我们使用Mono在Linux中运行Winforms。 我们需要检查Linux中是否安装了应用程序,如果已安装则启动

[英]We are running Winforms in Linux using Mono. We need to check an application is installed in Linux or not and launch if it is installed

我们正在开发一个支持Windows和Linux(使用Mono)的WinForm应用程序。 我们想要检查是否安装了特定的应用程序,并在安装时启动。 在Windows中我们正在检查注册表项(使用C#),我们可以启动相同的操作。我们可以在Linux中实现这一点吗? 我们是否需要编写任何shell脚本来访问已安装的注册表位置。 我对Linux的知识很少。 需要建议解决此问题,任何使用的代码片段都是值得注意的。

要查找应用程序,可以使用“which”命令。 您需要使用以下内容:

var info = new ProcessStartInfo();
info.FileName = "which";
info.Arguments = "myapplication";

info.UseShellExecute = false;
info.CreateNoWindow = true;

info.RedirectStandardOutput = true;
info.RedirectStandardError = true;

var p = Process.Start(info);

string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();

根据您需要的外部应用程序,替代方法是依赖文件扩展名。 例如,如果您以excel格式编写报表,则可以通过以下方式让应用程序打开它:

Process.Start("myfolder\myexcelbook.xlsx");

如果系统具有能够打开文件的应用程序,这将起作用。 这是我在我的应用程序中使用的方法(也是为Windows和Unix / Linux构建的),因为用户可以自由地使用他/她选择的不同应用程序,而不是我想要的那个(我在xlsx中提供输出, odt和pdf格式,以及上面的单行适用于所有这些格式)。

暂无
暂无

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

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