Class: Chef::Provider::Package::Windows::RegistryUninstallEntry
- Inherits:
-
Object
- Object
- Chef::Provider::Package::Windows::RegistryUninstallEntry
- Defined in:
- lib/chef/provider/package/windows/registry_uninstall_entry.rb
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
-
#display_name ⇒ Object
readonly
Returns the value of attribute display_name.
-
#display_version ⇒ Object
readonly
Returns the value of attribute display_version.
-
#hive ⇒ Object
readonly
Returns the value of attribute hive.
-
#key ⇒ Object
readonly
Returns the value of attribute key.
-
#uninstall_string ⇒ Object
readonly
Returns the value of attribute uninstall_string.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(hive, key, registry_data) ⇒ RegistryUninstallEntry
constructor
A new instance of RegistryUninstallEntry.
Constructor Details
#initialize(hive, key, registry_data) ⇒ RegistryUninstallEntry
Returns a new instance of RegistryUninstallEntry.
65 66 67 68 69 70 71 72 73 |
# File 'lib/chef/provider/package/windows/registry_uninstall_entry.rb', line 65 def initialize(hive, key, registry_data) Chef::Log.debug("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, "UninstallString") end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
80 81 82 |
# File 'lib/chef/provider/package/windows/registry_uninstall_entry.rb', line 80 def data @data end |
#display_name ⇒ Object (readonly)
Returns the value of attribute display_name.
77 78 79 |
# File 'lib/chef/provider/package/windows/registry_uninstall_entry.rb', line 77 def display_name @display_name end |
#display_version ⇒ Object (readonly)
Returns the value of attribute display_version.
78 79 80 |
# File 'lib/chef/provider/package/windows/registry_uninstall_entry.rb', line 78 def display_version @display_version end |
#hive ⇒ Object (readonly)
Returns the value of attribute hive.
75 76 77 |
# File 'lib/chef/provider/package/windows/registry_uninstall_entry.rb', line 75 def hive @hive end |
#key ⇒ Object (readonly)
Returns the value of attribute key.
76 77 78 |
# File 'lib/chef/provider/package/windows/registry_uninstall_entry.rb', line 76 def key @key end |
#uninstall_string ⇒ Object (readonly)
Returns the value of attribute uninstall_string.
79 80 81 |
# File 'lib/chef/provider/package/windows/registry_uninstall_entry.rb', line 79 def uninstall_string @uninstall_string end |
Class Method Details
.find_entries(package_name) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/chef/provider/package/windows/registry_uninstall_entry.rb', line 28 def self.find_entries(package_name) Chef::Log.debug("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 == package_name entries.push(RegistryUninstallEntry.new(hkey, key, entry)) end rescue ::Win32::Registry::Error => ex Chef::Log.debug("Registry error opening key '#{key}' on node #{desired}: #{ex}") end end end rescue ::Win32::Registry::Error => ex Chef::Log.debug("Registry error opening hive '#{hkey[0]}' :: #{desired}: #{ex}") end end entries end |
.read_registry_property(data, property) ⇒ Object
58 59 60 61 62 63 |
# File 'lib/chef/provider/package/windows/registry_uninstall_entry.rb', line 58 def self.read_registry_property(data, property) data[property] rescue ::Win32::Registry::Error => ex Chef::Log.debug("Failure to read property '#{property}'") nil end |