summaryrefslogtreecommitdiff
path: root/lib/chef/win32/api/installer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/win32/api/installer.rb')
-rw-r--r--lib/chef/win32/api/installer.rb19
1 files changed, 9 insertions, 10 deletions
diff --git a/lib/chef/win32/api/installer.rb b/lib/chef/win32/api/installer.rb
index e1be747245..caf7b23f59 100644
--- a/lib/chef/win32/api/installer.rb
+++ b/lib/chef/win32/api/installer.rb
@@ -32,7 +32,6 @@ class Chef
# Win32 API Constants
###############################################
-
###############################################
# Win32 API Bindings
###############################################
@@ -94,7 +93,7 @@ UINT MsiCloseHandle(
msg << Chef::ReservedNames::Win32::Error.format_message(status)
raise Chef::Exceptions::Package, msg
end
-
+
buffer_length = FFI::Buffer.new(:long).write_long(buffer_length.read_long + 1)
buffer = 0.chr * buffer_length.read_long
@@ -114,18 +113,18 @@ UINT MsiCloseHandle(
# Opens a Microsoft Installer (MSI) file from an absolute path and returns a pointer to a handle
# Remember to close the handle with msi_close_handle()
def open_package(package_path)
- # MsiOpenPackage expects a perfect absolute Windows path to the MSI
+ # MsiOpenPackage expects a perfect absolute Windows path to the MSI
raise ArgumentError, "Provided path '#{package_path}' must be an absolute path" unless Pathname.new(package_path).absolute?
pkg_ptr = FFI::MemoryPointer.new(:pointer, 4)
status = msi_open_package(package_path, 1, pkg_ptr)
case status
- when 0
+ when 0
# success
else
raise Chef::Exceptions::Package, "msi_open_package: unexpected status #{status}: #{Chef::ReservedNames::Win32::Error.format_message(status)}"
end
- return pkg_ptr
+ return pkg_ptr
end
# All installed product_codes should have a VersionString
@@ -133,11 +132,11 @@ UINT MsiCloseHandle(
def get_installed_version(product_code)
version = 0.chr
version_length = FFI::Buffer.new(:long).write_long(0)
-
+
status = msi_get_product_info(product_code, "VersionString", version, version_length)
-
+
return nil if status == 1605 # ERROR_UNKNOWN_PRODUCT (0x645)
-
+
# We expect error ERROR_MORE_DATA (234) here because we passed a buffer length of 0
if status != 234
msg = "msi_get_product_info: product code '#{product_code}' returned unknown error #{status} when retrieving VersionString: "
@@ -149,9 +148,9 @@ UINT MsiCloseHandle(
version_length = FFI::Buffer.new(:long).write_long(version_length.read_long + 1)
version = 0.chr * version_length.read_long
-
+
status = msi_get_product_info(product_code, "VersionString", version, version_length)
-
+
if status != 0
msg = "msi_get_product_info: product code '#{product_code}' returned unknown error #{status} when retrieving VersionString: "
msg << Chef::ReservedNames::Win32::Error.format_message(status)