我有一个 Java 应用程序,需要某些软件(其中之一是 Perl)才能运行。我以前用来检测 Perl 的方法是:
Runtime.getRuntime().exec("perl Test.pl");
如果出现 IOException,则声明不存在 Perl。
但是,我的一位用户抱怨应用程序不断失败,因为他没有将 Perl 放入路径变量中。所以这就是为什么我要问:有没有跨操作系统的方法来检测用户系统上是否安装了 Perl(或任何其他软件)以及程序的路径?
在约定的位置安装 perl
Don 提到的其他选项是安装与您的安装相关的所需软件,这是一个更常见的选项。
要检查应用程序是否已安装,请使用 ProcessBuilder 或 Runtime.exec 运行以下 PowerShell 命令之一,
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall* |选择对象显示名称 |其中 {$_.DisplayName -match "perl"}用您选择的软件替换“perl”,并流式传输这些软件的输出并对其进行处理。
如果是 PERL(对于上述问题),请按照以下 2 个步骤设置路径并从 java 运行 perl 脚本第 2 步 - 如果可用,请使用 java 代码将其设置为环境路径。
第 3 步 - 运行 Perl 脚本。
Powershell 中的示例:
(gp HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*).DisplayName -Contains "Android Studio"
您将得到
True
或
False
作为输出这仅适用于Windows