Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 检查程序是否存在,如果不存在,请安装它_Bash_Shell_Jenkins_Nsis - Fatal编程技术网

Bash 检查程序是否存在,如果不存在,请安装它

Bash 检查程序是否存在,如果不存在,请安装它,bash,shell,jenkins,nsis,Bash,Shell,Jenkins,Nsis,我正在用NSIS文件编写Jenkins构建。我需要一个脚本来检查设备上是否安装了某个程序,如果没有,它应该从installer文件夹安装.exe。我在安装文件夹中有安装程序工作所需的所有.exe 这应该很简单,但在这种情况下我感到困惑,在任何地方都找不到有关这方面的任何信息。我想您使用的是windows环境。您可以编写powershell脚本来检查它: Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninsta

我正在用NSIS文件编写Jenkins构建。我需要一个脚本来检查设备上是否安装了某个程序,如果没有,它应该从installer文件夹安装.exe。我在安装文件夹中有安装程序工作所需的所有.exe


这应该很简单,但在这种情况下我感到困惑,在任何地方都找不到有关这方面的任何信息。

我想您使用的是windows环境。您可以编写powershell脚本来检查它:

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Select-Object DisplayName | Select-String 'Microsoft Visual C\+\+'

这将列出所有安装的VisualC++重新分发表

在我的机器上看起来是这样的:

@{DisplayName=Microsoft Visual C++ 2005 Redistributable (x64)}
@{DisplayName=Microsoft Visual C++ 2010  x64 Redistributable - 10.0.40219}
@{DisplayName=Microsoft Visual C++ 2012 x64 Additional Runtime - 11.0.61030}
@{DisplayName=Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.6161}
@{DisplayName=Microsoft Visual C++ 2005 Redistributable (x64)}
@{DisplayName=Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.17}
@{DisplayName=Microsoft Visual C++ 2013 x64 Additional Runtime - 12.0.21005}
@{DisplayName=Microsoft Visual C++ 2013  x64 Designtime - 12.0.21005}
@{DisplayName=Microsoft Visual C++ 2015 x64 Debug Runtime - 14.0.23506}
@{DisplayName=Microsoft Visual C++ 2015 x64 Minimum Runtime - 14.0.23506}
@{DisplayName=Microsoft Visual C++ 2013 x64 Minimum Runtime - 12.0.21005}
@{DisplayName=Microsoft Visual C++ 2012 x64 Debug Runtime - 11.0.60610}
@{DisplayName=Microsoft Visual C++ 2005 Redistributable (x64)}
@{DisplayName=Microsoft Visual C++ 2015 x64 Additional Runtime - 14.0.23506}
@{DisplayName=Microsoft Visual C++ 2013 x64 Debug Runtime - 12.0.21005}
@{DisplayName=Microsoft Visual C++ 2012 x64 Minimum Runtime - 11.0.61030}
因此,如果要检查的程序名为
ProgramWithName
,只需使用:

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Select-Object DisplayName | Select-String ProgramWithName
如果您想知道是否安装了SQL Server,请使用:

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Select-Object DisplayName | Select-String 'Microsoft SQL Server 2014 Express'
这在我的机器上为您提供:

@{DisplayName=Microsoft SQL Server 2014 Express LocalDB }

但是,如果我想让脚本检查SQL是否已安装,如果不想让脚本运行文件夹中的.exe,该怎么办?但这个答案肯定会适用于我拥有的其他.exe。非常感谢。