检查程序是否存在以及是否安装程序

时间:2016-03-18 06:55:37

标签: bash shell jenkins nsis

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

这应该相当简单,但在这种情况下我感到困惑,无法在任何地方找到任何相关信息。

1 个答案:

答案 0 :(得分:2)

我想你正在使用Windows环境。您可以编写一个powershell脚本来检查它:

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

这将列出所有已安装的Visual C ++ Redistributables

在我的机器上看起来像是:

@{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 }