wixgem 0.33.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0ad9f8a4070ee4bddfa138baf13adfa2b6bc74d2
4
- data.tar.gz: fd44d0d360a288cc10d5f07e88e77c2017c0591c
3
+ metadata.gz: 22c840bc7be89ccd3907cd8170f61197534d1d6d
4
+ data.tar.gz: 5fdb74a08e62361bdbba93f51617e22174d6e7d5
5
5
  SHA512:
6
- metadata.gz: bb6c4dddc389dee7cdba6d8596a4eb8939c657ce4f11675115cd3f3101543602255032e6c1cb4933b834f2088a58ca0984db62bb41f4a2b199f4dab95c1601a0
7
- data.tar.gz: 2c5c97aeb97acb74ed7b37f8121a34c83485bb5fbd662ab35736d6b2fb80283dd41c27cef717ff9e307ac78b3cd680d7451ad66d7dafd5ee455618f7903b94a3
6
+ metadata.gz: 3b91f539189b3dcab3d616c619247378b25e381b27641859a439395ea8413ebf692c1867d482e8e23eb5887ab1cde3792b05d19011d9fe60b213e3be7aa57103
7
+ data.tar.gz: cc1e257c42d35b13c34ff21a1c730991d6ee7719ef90c7a8d0c570ac8aaf5ace8d2ee12d11e1fe907aa88d83da917461f7affd048888c371d54d820fc2b2650e
data/README.md CHANGED
@@ -14,14 +14,15 @@ The [WiX Toolset](http://wixtoolset.org) must be installed.
14
14
  require 'wixgem'
15
15
 
16
16
  WIX_TOOLSET_ROOT='path to root of Wix toolset'
17
- Wix.make_installation('Product.msi', ['rakefile.rb']])
17
+ Wixgen::Wix.make_installation('Product.msi', ['rakefile.rb']])
18
18
 
19
- Wix.make_installation('Product.msi', {product_name: 'productname',
20
- version: '1.1.0.0'
21
- upgrade_code: '{1d5df00a-c18d-4897-95e6-8c936dd19647}',
22
- files: ['rakefile.rb'] }
19
+ Wixgen::Wix.make_installation('Product.msi', {product_name: 'productname',
20
+ version: '1.1.0.0'
21
+ upgrade_code: '{1d5df00a-c18d-4897-95e6-8c936dd19647}',
22
+ files: ['rakefile.rb'] }
23
23
 
24
- Wix.make_installation('Product.msi', {modify_file_paths: {/\Atest_files\// => ''}, files: Dir.glob("test_files/**/*")})
24
+ Wixgen::Wix.make_installation('Product.msi', {modify_file_paths: {/\Atest_files\// => ''},
25
+ files: Dir.glob("test_files/**/*")})
25
26
  ```
26
27
 
27
28
  #### Merge Module
@@ -29,7 +30,7 @@ Wix.make_installation('Product.msi', {modify_file_paths: {/\Atest_files\// => ''
29
30
  require 'wixgem'
30
31
 
31
32
  WIX_TOOLSET_ROOT='path to root of Wix toolset'
32
- Wix.make_mergemodule('Product.msi', ['rakefile.rb']])
33
+ Wixgen::Wix.make_mergemodule('Product.msi', ['rakefile.rb']])
33
34
 
34
35
  ```
35
36
  An example rakefile.rb is included in the example directory of the gem.
@@ -52,6 +53,10 @@ small set of optional arguments allowing the developer to customize the generate
52
53
  * **has_vb6_files**: Required if installation contains any ocx's or dll's compiled with Visual Basic 6.
53
54
  * **remove_existing_products**: A boolean value. If the value is true the installation will remove all existing
54
55
  installations of the product before installing the product.
56
+ * **all_users**: String value perUser or perMachine. The default is perUser.
57
+ * **debug**: Boolean value. If debug is true the Product's wxs file and a log file are copied
58
+ to the same directory as the output msi file. This can help trouble shooting the
59
+ installation.
55
60
 
56
61
 
57
62
  ## License
data/example/example.msi CHANGED
Binary file
data/example/example.msm CHANGED
Binary file
data/example/rakefile.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'wixgem'
2
2
 
3
- #Wix.install_path = 'E:\Development\dep\OpenSource\WixToolset\3.9'
4
- Wix.install_path = '<Path to the root directory of the wix toolset>'
3
+ #Wixgem::Wix.install_path = 'E:\Development\dep\OpenSource\WixToolset\3.9'
4
+ Wixgem::Wix.install_path = '<Path to the root directory of the wix toolset>'
5
5
 
6
6
  task :create_installation_files do
7
7
  FileUtils.mkpath('./install_files/directory')
@@ -13,13 +13,13 @@ end
13
13
  task :mergemodule => [:create_installation_files] do
14
14
  installation_files = Dir.glob('./install_files/**/*')
15
15
 
16
- Wix.make_mergemodule('./example.msm', installation_files)
16
+ Wixgem::Wix.make_mergemodule('./example.msm', installation_files)
17
17
  end
18
18
 
19
19
  desc "Generate an installation msi file"
20
20
  task :installation => [:mergemodule] do
21
21
  installation_files = Dir.glob('./example.msm')
22
- Wix.make_installation("./example.msi",
22
+ Wixgem::Wix.make_installation("./example.msi",
23
23
  { upgrade_code: '{a62c35a7-6a6d-4392-822b-f6aca7eef88b}',
24
24
  files: installation_files }
25
25
  )
data/lib/command.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'open3'
2
2
  require 'hash'
3
3
 
4
+ module Wixgem
5
+
4
6
  class Command < Hash
5
7
  def initialize(cmd)
6
8
  self[:command]=cmd
@@ -8,17 +10,31 @@ class Command < Hash
8
10
  self[:error] = ''
9
11
  self[:exit_code] = ''
10
12
  self[:ignore_exit_code] = false
13
+ self[:debug] = false
11
14
  end
12
15
 
13
16
  def execute
14
17
  begin
18
+ puts "command: #{self[:command]}" if(self[:debug])
15
19
  self[:output],self[:error], self[:exit_code] = Open3.capture3(self[:command])
16
20
  self[:exit_code]=self[:exit_code].to_i
21
+
22
+ if(self[:debug])
23
+ puts "output: #{self[:output]}"
24
+ puts "error: #{self[:error]}"
25
+ puts "exit_code: #{self[:exit_code]}"
26
+ end
17
27
  rescue Exception => e
18
28
  self[:error] = "Exception: " + e.to_s
19
29
  self[:exit_code]=1
20
30
  end
21
31
 
22
- raise self[:error] unless((self[:exit_code] == 0) || self[:ignore_exit_code])
32
+ if((self[:exit_code] != 0) && !self[:ignore_exit_code])
33
+ exception_text = self[:error]
34
+ exception_text = self[:output] if(self[:error].empty?)
35
+ raise "Command exception: #{exception_text}"
36
+ end
23
37
  end
38
+ end
39
+
24
40
  end
data/lib/wixgem.rb CHANGED
@@ -6,6 +6,8 @@ require 'tmpdir.rb'
6
6
  require 'rexml/document'
7
7
  require "#{File.dirname(__FILE__)}/command.rb"
8
8
 
9
+ module Wixgem
10
+
9
11
  class Wix
10
12
  def self.initialize
11
13
  @install_path = ''
@@ -70,6 +72,9 @@ class Wix
70
72
  end
71
73
 
72
74
  def self.manage_custom_actions(xml_doc, input)
75
+ # Example custom action
76
+ #<CustomAction Id='comReg' Directory='INSTALLLOCATION' Execute='deferred' Impersonate='no' ExeCommand='"[NETFRAMEWORK40CLIENTINSTALLROOTDIR]regasm.exe" "[INSTALLLOCATION]EAWordImporter.dll" /codebase' Return='check' />
77
+
73
78
  manufacturer = 'Not Set'
74
79
  manufacturer = input[:manufacturer] if(input.has_key?(:manufacturer))
75
80
 
@@ -79,13 +84,15 @@ class Wix
79
84
  product = REXML::XPath.match(xml_doc, '//Wix/Product')
80
85
  return xml_doc if(product.length == 0)
81
86
 
82
- product[0].add_element 'CustomAction', { 'Id' => 'SetTARGETDIR', 'Property' => 'TARGETDIR', 'Value' => "#{install_path}", 'Return' => 'check'}
87
+ product[0].add_element 'CustomAction', { 'Id' => 'SetTARGETDIR', 'Property' => 'TARGETDIR', 'Value' => "#{install_path}", 'Execute' => 'firstSequence', 'Return' => 'check'}
83
88
 
84
89
  install_execute_sequence = product[0].add_element 'InstallExecuteSequence'
85
- custom_action = install_execute_sequence.add_element 'Custom', { 'Action' => 'SetTARGETDIR', 'Before'=>'CostFinalize' }
90
+ #custom_action = install_execute_sequence.add_element 'Custom', { 'Action' => 'SetTARGETDIR', 'Before'=>'CostFinalize' }
91
+ custom_action = install_execute_sequence.add_element 'Custom', { 'Action' => 'SetTARGETDIR', 'Before'=>'CostInitialize' }
86
92
 
87
93
  admin_execute_sequence = product[0].add_element 'AdminExecuteSequence'
88
- custom_action = admin_execute_sequence.add_element 'Custom', { 'Action' => 'SetTARGETDIR', 'Before'=>'CostFinalize' }
94
+ #custom_action = admin_execute_sequence.add_element 'Custom', { 'Action' => 'SetTARGETDIR', 'Before'=>'CostFinalize' }
95
+ custom_action = admin_execute_sequence.add_element 'Custom', { 'Action' => 'SetTARGETDIR', 'Before'=>'CostInitialize' }
89
96
  return xml_doc
90
97
  end
91
98
 
@@ -176,7 +183,7 @@ class Wix
176
183
  @logger.debug "command: #{heat_cmd[:command]}" if(@debug)
177
184
 
178
185
  heat_cmd.execute
179
- if(@debug)
186
+ if(@debug && !heat_cmd[:output].empty?)
180
187
  @logger.debug "--------------------------- Heat output -----------------------------------"
181
188
  @logger.debug heat_cmd[:output]
182
189
  end
@@ -227,20 +234,20 @@ class Wix
227
234
  def self.create_output(wxs_file, output)
228
235
  wixobj_file = "#{File.basename(wxs_file,'.wxs')}.wixobj"
229
236
 
230
- candle_cmd = Command.new("\"#{install_path}\\bin\\candle.exe\" -out \"#{wixobj_file}\" \"#{wxs_file}\"")
237
+ candle_cmd = Command.new("\"#{install_path}/bin/candle.exe\" -out \"#{wixobj_file}\" \"#{wxs_file}\"")
231
238
  @logger.debug "command: #{candle_cmd[:command]}" if(@debug)
232
239
 
233
240
  candle_cmd.execute
234
- if(@debug)
241
+ if(@debug && !candle_cmd[:output].empty?)
235
242
  @logger.debug "--------------------------- Candle output -----------------------------------"
236
243
  @logger.debug candle_cmd[:output]
237
244
  end
238
245
 
239
- light_cmd = Command.new("\"#{install_path}\\bin\\light.exe\" -nologo -out \"#{output}\" \"#{wixobj_file}\"")
246
+ light_cmd = Command.new("\"#{install_path}/bin/light.exe\" -nologo -out \"#{output}\" \"#{wixobj_file}\"")
240
247
  @logger.debug "command: #{light_cmd[:command]}" if(@debug)
241
248
 
242
249
  light_cmd.execute
243
- if(@debug)
250
+ if(@debug && !light_cmd[:output].empty?)
244
251
  @logger.debug "--------------------------- Light output -----------------------------------"
245
252
  @logger.debug light_cmd[:output]
246
253
  end
@@ -282,4 +289,6 @@ class Wix
282
289
 
283
290
  end_logger if(@debug)
284
291
  end
292
+ end
293
+
285
294
  end
data/spec/COM_spec.rb CHANGED
@@ -6,7 +6,12 @@ require './spec/test_files_exist.rb'
6
6
  require 'win32ole'
7
7
  require './admin.rb'
8
8
 
9
- if(admin?)
9
+ # Unfortunately, I am unable to automate testing of the COM installation. What I do not understand is I am unable to
10
+ # script this COM msi. If I attempt to script the COM msi, the COM dll is never installed. I am speculating, the custom action
11
+ # for the TARGETDIR is not functioning. If I use the mouse to double click on the msi, the privileges are raised to
12
+ # administrative privileges the COM object is correctly installed. Don't understand the difference.
13
+
14
+ if(admin? && false)
10
15
  describe 'Wixgem' do
11
16
  describe 'Installation of a COM object' do
12
17
  it 'should not be able to instance a COM object' do
@@ -18,9 +23,9 @@ describe 'Wixgem' do
18
23
  WindowsInstaller.uninstall(installation_file)
19
24
  end
20
25
 
21
- installation_hash = { debug: true, modify_file_paths: {/^.+Release\// => ''}, all_users: 'perMachine', files: ['COMObject/bin/Release/COMObject.dll']}
26
+ installation_hash = { debug: true, all_users: 'perMachine', files: ['COMObject/bin/Release/COMObject.dll']}
22
27
  it "should create an installation file using: #{installation_file}" do
23
- Wix.make_installation(installation_file, installation_hash)
28
+ Wixgem::Wix.make_installation(installation_file, installation_hash)
24
29
  expect(File.exists?(installation_file)).to be(true)
25
30
  end
26
31
 
@@ -13,10 +13,23 @@ class WindowsInstaller
13
13
 
14
14
  def self.install(msi)
15
15
  raise "#{msi} is already installed" if(WindowsInstaller.installed?(msi))
16
+ execute("msiexec.exe /i #{msi}")
16
17
  end
17
18
 
18
- def self.uninstall(msi)
19
- execute("msiexec.exe /quiet /x #{msi}") if(File.exists?(msi))
19
+ def self.uninstall(msi_product_code_or_product_name)
20
+ value = msi_product_code_or_product_name
21
+ if(File.exists?(value))
22
+ execute("msiexec.exe /quiet /x #{value}")
23
+ return
24
+ end
25
+
26
+ installer = WIN32OLE.new('WindowsInstaller.Installer')
27
+ installer.Products.each { |prod_code|
28
+ name = installer.ProductInfo(prod_code, "ProductName")
29
+ value = prod_code if (value == name)
30
+ }
31
+
32
+ execute("msiexec.exe /quiet /x #{value}")
20
33
  end
21
34
 
22
35
  def self.product_code_installed?(product_code)
@@ -25,13 +38,13 @@ class WindowsInstaller
25
38
  return false
26
39
  end
27
40
 
28
- def self.version?(product_name)
41
+ def self.version(product_name)
29
42
  installer = WIN32OLE.new('WindowsInstaller.Installer')
30
- info = product_info(installer, product_code?(product_name, installer))
43
+ info = product_info(installer, product_code(product_name, installer))
31
44
  return info['VersionString']
32
45
  end
33
46
 
34
- def self.product_code?(product_name, installer = nil)
47
+ def self.product_code(product_name, installer = nil)
35
48
  installer = WIN32OLE.new('WindowsInstaller.Installer') if(installer.nil?)
36
49
  installer.Products.each { |prod_code|
37
50
  name = installer.ProductInfo(prod_code, "ProductName")
@@ -70,7 +83,7 @@ class WindowsInstaller
70
83
  public
71
84
  def self.dump_info(product_name)
72
85
  installer = WIN32OLE.new('WindowsInstaller.Installer')
73
- properties = product_info(installer, product_code?(product_name, installer))
86
+ properties = product_info(installer, product_code(product_name, installer))
74
87
  properties.each { |id, value| puts "#{id}: #{value}" }
75
88
  end
76
89
 
@@ -130,10 +143,9 @@ class WindowsInstaller
130
143
  puts ''
131
144
  end
132
145
 
133
- def execute(cmd)
134
- command = Command.new(cmd)
146
+ def self.execute(cmd)
147
+ command = Wixgem::Command.new(cmd)
135
148
  command.execute
136
-
137
- raise "Failed: #{cmd} Status: #{command[:exit_code]}\nStdout: #{command[:output]}\nStderr: #{command[:error]}" unless(command[:exit_code] == 0)
138
149
  end
139
150
  end
151
+
data/spec/command_spec.rb CHANGED
@@ -3,14 +3,14 @@ require './lib/command.rb'
3
3
 
4
4
  describe 'Command' do
5
5
  it 'should be able to execute: dir' do
6
- cmd = Command.new('dir')
6
+ cmd = Wixgem::Command.new('dir')
7
7
  cmd.execute
8
8
  expect(cmd[:output].empty?).to eq(false)
9
9
  expect(cmd[:output].include?('Directory')).to eq(true)
10
10
  end
11
11
 
12
12
  it 'should fail executing: isnotacommand' do
13
- cmd = Command.new('isnotacommand')
13
+ cmd = Wixgem::Command.new('isnotacommand')
14
14
  expect { cmd.execute }.to raise_error
15
15
  expect(cmd[:error].include?('No such file or directory')).to eq(true)
16
16
  expect(cmd[:exit_status]).to_not eq(0)
@@ -5,7 +5,7 @@ require './spec/test_install.rb'
5
5
  require './spec/test_files_exist.rb'
6
6
 
7
7
  describe 'Wixgem' do
8
- #Wix.debug = true
8
+ #Wixgem::Wix.debug = true
9
9
  describe 'Installation' do
10
10
  test_arguments = {
11
11
  test0: ['wixgem_install_test1.msi', ['rakefile.rb']],
@@ -21,7 +21,7 @@ describe 'Wixgem' do
21
21
 
22
22
  test_arguments.each { |key, value|
23
23
  it "should create an installation file using: #{value[0]}" do
24
- Wix.make_installation(value[0], value[1])
24
+ Wixgem::Wix.make_installation(value[0], value[1])
25
25
  expect(File.exists?(value[0])).to be(true)
26
26
  end
27
27
 
@@ -44,17 +44,16 @@ describe 'Wixgem' do
44
44
 
45
45
  exception_test_arguments.each { |key, value|
46
46
  it "#{key} should raise an exception" do
47
- expect { Wix.make_installation(value[0], value[1]) }.to raise_error
47
+ expect { Wixgem::Wix.make_installation(value[0], value[1]) }.to raise_error
48
48
  end
49
49
  }
50
50
  end
51
51
 
52
52
  describe 'including vb6 files' do
53
53
  it "the wix's heat command should contain the -svb6 flag" do
54
- Wix.make_installation('test/wixgem_install_vb6_files.msi', {debug: true, manufacturer: 'musco', has_vb6_files: true, files: ['rakefile.rb'], debug: true})
54
+ Wixgem::Wix.make_installation('test/wixgem_install_vb6_files.msi', {debug: true, manufacturer: 'musco', has_vb6_files: true, files: ['rakefile.rb'], debug: true})
55
55
  wix_cmd_text = File.read('test/wixgem_install_vb6_files.msi.log')
56
56
  expect(wix_cmd_text.include?('-svb6')).to eq(true)
57
57
  end
58
58
  end
59
-
60
- end
59
+ end
@@ -5,8 +5,6 @@ require './spec/test_install.rb'
5
5
  require './spec/WindowsInstaller.rb'
6
6
  require './admin.rb'
7
7
 
8
- Wix.debug=true
9
-
10
8
  describe 'Wixgem' do
11
9
  describe 'Merge Module' do
12
10
  test_arguments = {
@@ -19,13 +17,13 @@ describe 'Wixgem' do
19
17
 
20
18
  test_arguments.each { |key, value|
21
19
  it "should create merge module: #{value[0]}" do
22
- Wix.make_mergemodule(value[0], value[1])
20
+ Wixgem::Wix.make_mergemodule(value[0], value[1])
23
21
  raise "#{key}: #{value[0]} does not exist" unless(File.exists?(value[0]))
24
22
  end
25
23
 
26
24
  install_file = value[0].gsub(/msm/) { |s| s = 'msi' }
27
25
  it "should be able to create an installation file using: #{value[0]}" do
28
- Wix.make_installation(install_file, ["#{value[0]}"])
26
+ Wixgem::Wix.make_installation(install_file, ["#{value[0]}"])
29
27
 
30
28
  expect(File.exists?(install_file)).to be(true)
31
29
  end
@@ -49,14 +47,14 @@ describe 'Wixgem' do
49
47
  merge1='test\\wixgem_multiple_merge_test1.msm'
50
48
  merge2='test\\wixgem_multiple_merge_test2.msm'
51
49
  it "should be able to create two merge modules" do
52
- Wix.make_mergemodule(merge1, ['rakefile.rb'])
50
+ Wixgem::Wix.make_mergemodule(merge1, ['rakefile.rb'])
53
51
  expect(File.exists?(merge1)).to be(true)
54
- Wix.make_mergemodule(merge2, ['Gemfile'])
52
+ Wixgem::Wix.make_mergemodule(merge2, ['Gemfile'])
55
53
  expect(File.exists?(merge2)).to be(true)
56
54
  end
57
55
 
58
56
  it "should be able to create an installation file using: #{msi_file}" do
59
- Wix.make_installation(msi_file, [merge1, merge2])
57
+ Wixgem::Wix.make_installation(msi_file, [merge1, merge2])
60
58
  expect(File.exists?(msi_file)).to be(true)
61
59
  end
62
60
 
@@ -1,6 +1,7 @@
1
1
  require 'rspec'
2
2
  require './lib/wixgem.rb'
3
3
  require './spec/wixpath.rb'
4
+ require './spec/WindowsInstaller.rb'
4
5
  require './admin.rb'
5
6
 
6
7
  if(admin?)
@@ -8,60 +9,58 @@ describe 'Wixgem' do
8
9
  describe 'Side by side installations' do
9
10
  product1='wixgem_multiple 1.0'
10
11
  product2='wixgem_multiple 1.1'
11
- begin
12
- Wix.make_installation("test/wixgem_multiple.1.0.0.msi", {version: '1.0.0.0', product_name: product1, upgrade_code: '{face46ab-74ce-44eb-a2b7-81a8cfad5bab}', files: ['Gemfile']})
13
- Wix.make_installation("test/wixgem_multiple.1.1.0.msi", {version: '1.1.0.0', product_name: product2, upgrade_code: '{face46ab-74ce-44eb-a2b7-81a8cfad5bab}', files: ['rakefile.rb']})
12
+
13
+ Wixgem::Wix.make_installation("test/wixgem_multiple.1.0.0.msi", {version: '1.0.0.0', product_name: product1, upgrade_code: '{face46ab-74ce-44eb-a2b7-81a8cfad5bab}', files: ['Gemfile']})
14
+ Wixgem::Wix.make_installation("test/wixgem_multiple.1.1.0.msi", {version: '1.1.0.0', product_name: product2, upgrade_code: '{face46ab-74ce-44eb-a2b7-81a8cfad5bab}', files: ['rakefile.rb']})
14
15
 
15
- it "should install version 1.0.0" do
16
- execute("msiexec.exe /i test\\wixgem_multiple.1.0.0.msi")
17
- expect(WindowsInstaller.installed?(product1)).to be(true)
18
- expect(WindowsInstaller.version?(product1)).to eq('1.0.0.0')
19
- end
16
+ it "should install version 1.0.0" do
17
+ WindowsInstaller.install('test\\wixgem_multiple.1.0.0.msi')
18
+ expect(WindowsInstaller.installed?(product1)).to be(true)
19
+ expect(WindowsInstaller.version(product1)).to eq('1.0.0.0')
20
+ end
20
21
 
21
- it "should install version 1.1.0" do
22
- execute("msiexec.exe /i test\\wixgem_multiple.1.1.0.msi")
23
- expect(WindowsInstaller.installed?(product2)).to be(true)
24
- expect(WindowsInstaller.version?(product2)).to eq('1.1.0.0')
25
- end
22
+ it "should install version 1.1.0" do
23
+ WindowsInstaller.install('test\\wixgem_multiple.1.1.0.msi')
24
+ expect(WindowsInstaller.installed?(product2)).to be(true)
25
+ expect(WindowsInstaller.version(product2)).to eq('1.1.0.0')
26
+ end
26
27
 
27
- it "version 1.0.0 should still be installed" do
28
- expect(WindowsInstaller.installed?(product1)).to be(true)
29
- end
28
+ it "version 1.0.0 should still be installed" do
29
+ expect(WindowsInstaller.installed?(product1)).to be(true)
30
+ end
31
+
32
+ it "product codes for version 1.0.0 and 1.0.0 should be different" do
33
+ expect(WindowsInstaller.product_code(product1)).not_to eq(WindowsInstaller.product_code(product2))
34
+ end
30
35
 
31
- it "product codes for version 1.0.0 and 1.0.0 should be different" do
32
- expect(WindowsInstaller.product_code?(product1)).not_to eq(WindowsInstaller.product_code?(product2))
33
- end
34
- ensure
35
- execute("msiexec.exe /quiet /x #{WindowsInstaller.product_code?(product1)}") while(WindowsInstaller.installed?(product1))
36
- raise "Failed to uninstall product #{product1}" if(WindowsInstaller.installed?(product1))
37
- execute("msiexec.exe /quiet /x #{WindowsInstaller.product_code?(product2)}") while(WindowsInstaller.installed?(product2))
38
- raise "Failed to uninstall product #{product2}" if(WindowsInstaller.installed?(product2))
36
+ it "Should be able to uninstall both products" do
37
+ WindowsInstaller.uninstall(product1)
38
+ WindowsInstaller.uninstall(product2)
39
39
  end
40
40
  end
41
41
 
42
42
  describe 'remove previous version' do
43
43
  product1='wixgem_install 1.0'
44
44
  product2='wixgem_install 1.1'
45
- begin
46
- Wix.make_installation("test/wixgem_install.1.0.0.msi", {version: '1.0.0.0', product_name: product1, upgrade_code: '{face46ab-74ce-44eb-a2b7-81a8cfad5bab}', files: ['Gemfile']})
47
- Wix.make_installation("test/wixgem_install.1.1.0.msi", {version: '1.1.0.0', product_name: product2, remove_existing_products: true, upgrade_code: '{face46ab-74ce-44eb-a2b7-81a8cfad5bab}', files: ['rakefile.rb']})
45
+ Wixgem::Wix.make_installation("test/wixgem_install.1.0.0.msi", {version: '1.0.0.0', product_name: product1, upgrade_code: '{face46ab-74ce-44eb-a2b7-81a8cfad5bab}', files: ['Gemfile']})
46
+ Wixgem::Wix.make_installation("test/wixgem_install.1.1.0.msi", {version: '1.1.0.0', product_name: product2, remove_existing_products: true, upgrade_code: '{face46ab-74ce-44eb-a2b7-81a8cfad5bab}', files: ['rakefile.rb']})
48
47
 
49
- it "should install version 1.0.0" do
50
- execute("msiexec.exe /i test\\wixgem_install.1.0.0.msi")
51
- expect(WindowsInstaller.installed?(product1)).to be(true)
52
- end
48
+ it "should install version 1.0.0" do
49
+ WindowsInstaller.install('test\\wixgem_install.1.0.0.msi')
50
+ expect(WindowsInstaller.installed?(product1)).to be(true)
51
+ end
53
52
 
54
- it "should install version 1.1.0" do
55
- execute("msiexec.exe /i test\\wixgem_install.1.1.0.msi")
56
- expect(WindowsInstaller.installed?(product2)).to be(true)
57
- end
53
+ it "should install version 1.1.0" do
54
+ WindowsInstaller.install('test\\wixgem_install.1.1.0.msi')
55
+ expect(WindowsInstaller.installed?(product2)).to be(true)
56
+ end
58
57
 
59
- it "the version 1.0.0 should have been uninstalled" do
60
- expect(WindowsInstaller.installed?(product1)).to be(false)
61
- end
62
- ensure
63
- execute("msiexec.exe /quiet /x #{WindowsInstaller.product_code?(product2)}") while(WindowsInstaller.installed?(product2))
64
- raise "Failed to uninstall product #{product2}" if(WindowsInstaller.installed?(product2))
58
+ it "the version 1.0.0 should have been uninstalled" do
59
+ expect(WindowsInstaller.installed?(product1)).to be(false)
60
+ end
61
+
62
+ it "should be able to uninstall #{product2}" do
63
+ WindowsInstaller.uninstall(product2)
65
64
  end
66
65
  end
67
66
  end
data/spec/test_install.rb CHANGED
@@ -41,13 +41,10 @@ end
41
41
 
42
42
  def test_install(name, msi_file, arg2, callback=nil)
43
43
  arg2 = { files: arg2} unless(arg2.kind_of?(Hash))
44
-
45
44
  msi_file = msi_file.gsub(/\//) { |s| s = '\\' }
46
-
47
45
  test_msi(msi_file, arg2)
48
46
 
49
47
  msi_info = WindowsInstaller.msi_records(msi_file)
50
-
51
48
  product_name = msi_info['ProductName']
52
49
 
53
50
  if(admin?)
@@ -57,8 +54,7 @@ def test_install(name, msi_file, arg2, callback=nil)
57
54
  raise "#{name}: Uninstall #{product_name} before running tests" if(WindowsInstaller.installed?(product_name))
58
55
 
59
56
  begin
60
- WindowsInstaller.install(msi_file)
61
-
57
+ WindowsInstaller.install(msi_file)
62
58
  raise "#{name}: Product name #{product_name} is not installed" unless(WindowsInstaller.installed?(product_name))
63
59
 
64
60
  eval callback unless(callback == nil)
data/spec/wixpath.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  WIX_PATH='E:/Development/dep/OpenSource/WixToolset/3.9'
2
2
 
3
- Wix.install_path = WIX_PATH
3
+ Wixgem::Wix.install_path = WIX_PATH
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wixgem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.33.0
4
+ version: 0.34.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Marshall