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

时间:2016-08-10 06:44:21

标签: c# mono

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

1 个答案:

答案 0 :(得分:0)

要查找应用程序,可以使用“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格式,以及上面的单行适用于所有这些格式。)