class Rake::Funnel::Support::MSDeploy::RegistryPatch
Constants
- FAKE_VERSION
- KEYS
- VERSION_VALUE
Public Class Methods
new() { |block| ... }
click to toggle source
# File lib/rake/funnel/support/msdeploy/registry_patch.rb, line 13 def initialize(&block) patch.apply! yield block if block_given? ensure patch.revert! end
Private Instance Methods
create_patch()
click to toggle source
# File lib/rake/funnel/support/msdeploy/registry_patch.rb, line 50 def create_patch # rubocop:disable Metrics/MethodLength, Metrics/AbcSize begin require 'win32/registry' rescue LoadError return Rake::Funnel::Support::Patch.new(self) end Rake::Funnel::Support::Patch.new(self) do |p| resets = [] p.setup do begin resets = KEYS.map do |key| root.create(key) do |r| begin r[VERSION_VALUE] delete_version = proc {} rescue ::Win32::Registry::Error r[VERSION_VALUE] = FAKE_VERSION delete_version = delete_value(r, VERSION_VALUE) end delete_key(r) || delete_version end end rescue ::Win32::Registry::Error => e $stderr.print "Could not patch registry to pretend MSDeploy is installed: #{e}\n" end end p.reset do resets.compact.each(&:call) end end end
delete_key(key)
click to toggle source
# File lib/rake/funnel/support/msdeploy/registry_patch.rb, line 30 def delete_key(key) return nil unless key.created? keyname = key.keyname proc do root.create(File.dirname(keyname)) do |r| r.delete_key(File.basename(keyname), true) end end end
delete_value(key, value)
click to toggle source
# File lib/rake/funnel/support/msdeploy/registry_patch.rb, line 41 def delete_value(key, value) keyname = key.keyname proc do root.create(keyname) do |r| r.delete_value(value) end end end
patch()
click to toggle source
# File lib/rake/funnel/support/msdeploy/registry_patch.rb, line 22 def patch @patch ||= create_patch end
root()
click to toggle source
# File lib/rake/funnel/support/msdeploy/registry_patch.rb, line 26 def root ::Win32::Registry::HKEY_LOCAL_MACHINE end