in chef/cookbooks/uber_helpers/libraries/win_utils.rb [16:80]
def self.win_pkg_ver(win_pkg_name)
require 'win32/registry'
pkg_version = nil
{
'HKEY_LOCAL_MACHINE' => [
'Software\Microsoft\Windows\CurrentVersion\Uninstall',
'Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall',
'Software\Wow6464Node\Microsoft\Windows\CurrentVersion\Uninstall',
],
'HKEY_CURRENT_USER' => [
'Software\Microsoft\Windows\CurrentVersion\Uninstall',
],
}.each do |reg_loc, reg_path|
break unless pkg_version.nil?
reg_path.each do |rpath|
break unless pkg_version.nil?
break unless reg_path_exist?(reg_loc, rpath)
win32_name = "::Win32::Registry::#{reg_loc}"
win32_class = Object.const_get(win32_name)
reg = win32_class.open(rpath)
reg.each_key do |key|
break unless pkg_version.nil?
k = reg.open(key)
begin
pkg_name = k['DisplayName']
pkg_ver = k['DisplayVersion']
if pkg_name && pkg_ver && pkg_name.include?(win_pkg_name)
pkg_version = pkg_ver
k.close
break
end
rescue StandardError
next
end
break unless pkg_version.nil?
k.close
end
reg.close
end
end
return pkg_version
end