class Chef::Provider::Package::Windows::RegistryUninstallEntry
Constants
- UNINSTALL_SUBKEY
Attributes
data[R]
display_name[R]
display_version[R]
hive[R]
key[R]
logger[R]
uninstall_string[R]
Public Class Methods
find_entries(package_name)
click to toggle source
# File lib/chef/provider/package/windows/registry_uninstall_entry.rb, line 28 def self.find_entries(package_name) logger.trace("Finding uninstall entries for #{package_name}") entries = [] [ [::Win32::Registry::HKEY_LOCAL_MACHINE, (::Win32::Registry::Constants::KEY_READ | 0x0100)], [::Win32::Registry::HKEY_LOCAL_MACHINE, (::Win32::Registry::Constants::KEY_READ | 0x0200)], [::Win32::Registry::HKEY_CURRENT_USER], ].each do |hkey| desired = hkey.length > 1 ? hkey[1] : ::Win32::Registry::Constants::KEY_READ begin ::Win32::Registry.open(hkey[0], UNINSTALL_SUBKEY, desired) do |reg| reg.each_key do |key, _wtime| begin entry = reg.open(key, desired) display_name = read_registry_property(entry, "DisplayName") if display_name.to_s.rstrip == package_name quiet_uninstall_string = RegistryUninstallEntry.read_registry_property(entry, "QuietUninstallString") entries.push(quiet_uninstall_string_key?(quiet_uninstall_string, hkey, key, entry)) end rescue ::Win32::Registry::Error => ex logger.trace("Registry error opening key '#{key}' on node #{desired}: #{ex}") end end end rescue ::Win32::Registry::Error => ex logger.trace("Registry error opening hive '#{hkey[0]}' :: #{desired}: #{ex}") end end entries end
logger()
click to toggle source
# File lib/chef/provider/package/windows/registry_uninstall_entry.rb, line 71 def self.logger Chef::Log end
new(hive, key, registry_data, uninstall_key = "UninstallString")
click to toggle source
# File lib/chef/provider/package/windows/registry_uninstall_entry.rb, line 75 def initialize(hive, key, registry_data, uninstall_key = "UninstallString") @logger = Chef::Log.with_child({ subsystem: "registry_uninstall_entry" }) logger.trace("Creating uninstall entry for #{hive}::#{key}") @hive = hive @key = key @data = registry_data @display_name = RegistryUninstallEntry.read_registry_property(registry_data, "DisplayName") @display_version = RegistryUninstallEntry.read_registry_property(registry_data, "DisplayVersion") @uninstall_string = RegistryUninstallEntry.read_registry_property(registry_data, uninstall_key) end
quiet_uninstall_string_key?(quiet_uninstall_string, hkey, key, entry)
click to toggle source
# File lib/chef/provider/package/windows/registry_uninstall_entry.rb, line 59 def self.quiet_uninstall_string_key?(quiet_uninstall_string, hkey, key, entry) return RegistryUninstallEntry.new(hkey, key, entry) if quiet_uninstall_string.nil? RegistryUninstallEntry.new(hkey, key, entry, "QuietUninstallString") end
read_registry_property(data, property)
click to toggle source
# File lib/chef/provider/package/windows/registry_uninstall_entry.rb, line 64 def self.read_registry_property(data, property) data[property] rescue ::Win32::Registry::Error logger.trace("Failure to read property '#{property}'") nil end