wixgem 0.30.0 → 0.31.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5281b8db4988dd4764f4795e6a341c4a79167f9a
4
- data.tar.gz: 838590c87615215884f770c9d8ed2659d11defd3
3
+ metadata.gz: d95c67cdf3018e6d670322ef4727ac4a7ad674b6
4
+ data.tar.gz: 81f6738e0e8dc13046af6f0b13f62175db6141ea
5
5
  SHA512:
6
- metadata.gz: fa3ad152cbc4ac35f9aea401fa965a5e33077f59a4ce0fb8eedde094271e08beecfd35b46aea2ad45f560b14124c436319bff00e1e734005574b564fe169e7b5
7
- data.tar.gz: 630116032a25d5304e8260010a6e0ef9a3efc7bcf39f57e269405b83e09ca87ce853b7c9ab6b948ddd39538894865a806048a347ae257f4909c6d82fa99c3c2e
6
+ metadata.gz: 54cdfbe55af0819b300199229c8b9ef7b06cafd5f32af441ea9bb3e886443f2103bdf4e8a7d56ae1332c4cd745cf09b4536e7ddcd14057d8190918ccd405d28b
7
+ data.tar.gz: 0b0d4f67df788faec251883cf34bae74dde0d289c4254bc751b43f4af2f2d844c5fbb73b0bc71ff26e2387aa0dedb2f0dc69382a3598e854cc52c75c40519f3d
data/lib/wixgem.rb CHANGED
@@ -58,6 +58,24 @@ class Wix
58
58
  return xml_doc
59
59
  end
60
60
 
61
+ def self.manage_com_files(xml_doc)
62
+ component_groups = REXML::XPath.match(xml_doc, '//Wix/Fragment/ComponentGroup')
63
+ return xml_doc if(component_groups.nil?)
64
+
65
+ com_dlls = {}
66
+ component_groups.each do |component_group|
67
+ component_group.each_element do |component|
68
+ classes = component.get_elements('Class')
69
+ if((classes.length == 1) && (classes[0].attributes["Context"] == 'InprocServer32'))
70
+ files = component.get_elements('File')
71
+ files[0].add_attribute('Assembly','.net')
72
+ end
73
+ end
74
+ end
75
+
76
+ return xml_doc
77
+ end
78
+
61
79
  def self.manage_custom_actions(xml_doc, input)
62
80
  manufacturer = 'Not Set'
63
81
  manufacturer = input[:manufacturer] if(input.kind_of?(Hash) && input.has_key?(:manufacturer))
@@ -68,11 +86,13 @@ class Wix
68
86
  product = REXML::XPath.match(xml_doc, '//Wix/Product')
69
87
  return xml_doc if(product.length == 0)
70
88
 
71
- product[0].add_element 'CustomAction', { 'Id' => 'SetTARGETDIR', 'Directory' => 'TARGETDIR', 'Value' => "#{install_path}", 'Return' => 'check'}
89
+ product[0].add_element 'CustomAction', { 'Id' => 'SetTARGETDIR', 'Property' => 'TARGETDIR', 'Value' => "#{install_path}", 'Return' => 'check'}
72
90
 
73
91
  install_execute_sequence = product[0].add_element 'InstallExecuteSequence'
74
- custom_action = install_execute_sequence.add_element 'Custom', { 'Action' => 'SetTARGETDIR', 'After'=>'InstallValidate' }
92
+ custom_action = install_execute_sequence.add_element 'Custom', { 'Action' => 'SetTARGETDIR', 'Before'=>'CostFinalize' }
75
93
 
94
+ admin_execute_sequence = product[0].add_element 'AdminExecuteSequence'
95
+ custom_action = admin_execute_sequence.add_element 'Custom', { 'Action' => 'SetTARGETDIR', 'Before'=>'CostFinalize' }
76
96
  return xml_doc
77
97
  end
78
98
 
@@ -159,9 +179,10 @@ class Wix
159
179
 
160
180
  wix_cmd = "\"#{install_path}/bin/heat.exe\" dir . #{template_option} -cg InstallionFiles -gg -nologo -srd -o \"#{wxs_file}\""
161
181
  wix_cmd = wix_cmd.gsub(/-srd/, '-svb6 -srd') if(input.kind_of?(Hash) && input.has_key?(:has_vb6_files))
162
- File.open("#{File.basename(wxs_file,'.wxs')}.wix_cmds.txt", 'w') { |f| f.puts wix_cmd } if(@debug)
163
182
 
164
183
  stdout = %x[#{wix_cmd}]
184
+
185
+ File.open("#{File.basename(wxs_file,'.wxs')}.wix_cmds.txt", 'w') { |f| f.puts wix_cmd } if(@debug)
165
186
  raise "#{stdout}\nFailed to generate .wxs file" unless(File.exists?(wxs_file))
166
187
 
167
188
  product_name = File.basename(wxs_file, '.wxs')
@@ -194,6 +215,7 @@ class Wix
194
215
  xml_doc = REXML::Document.new(wxs_text)
195
216
  xml_doc = manage_custom_actions(xml_doc, input)
196
217
  xml_doc = manage_upgrade(xml_doc,input)
218
+ xml_doc = manage_com_files(xml_doc)
197
219
  xml_doc = manage_msm_files(xml_doc)
198
220
 
199
221
  File.open(wxs_file, 'w') { |f| f.puts(xml_doc.to_s) }
data/spec/COM_spec.rb ADDED
@@ -0,0 +1,42 @@
1
+ require 'rspec'
2
+ require './lib/wixgem.rb'
3
+ require './spec/wixpath.rb'
4
+ require './WindowsInstaller.rb'
5
+ require 'win32ole'
6
+
7
+ describe 'Wixgem' do
8
+ describe 'Installation of a COM object' do
9
+ it 'should not be able to instance a COM object' do
10
+ expect { WIN32OLE.new('COMObject.ComClassExample') }.to raise_error
11
+ end
12
+
13
+ installation_file = 'test/wixgem_com_test.msi'
14
+ while(WindowsInstaller.installed?(installation_file))
15
+ WindowsInstaller.uninstall(installation_file)
16
+ end
17
+
18
+ it "should create an installation file using: #{installation_file}" do
19
+ Wix.make_installation(installation_file, { debug: true, files: ['COMObject/bin/Release/COMObject.dll']})
20
+ expect(File.exists?(installation_file)).to be(true)
21
+ end
22
+
23
+ WindowsInstaller.install(installation_file)
24
+
25
+ it 'should be able to instance a COM object with a GUID' do
26
+ #object = WIN32OLE.new('{863AEADA-EE73-4f4a-ABC0-3FB384CB41AA}')
27
+ #expect(object.nil?).to eq(false)
28
+ #puts "Text: #{object.GetText}"
29
+ #expect(object.GetText).to eq('Hello World')
30
+ end
31
+
32
+ it 'should be able to instance a COM object with a Program Id' do
33
+
34
+ #object = WIN32OLE.new('COMObject.ComClassExample')
35
+ #expect(object.nil?).to eq(false)
36
+ #puts "Text: #{object.GetText}"
37
+ #expect(object.GetText).to eq('Hello World')
38
+ end
39
+
40
+ WindowsInstaller.uninstall(installation_file) if(WindowsInstaller.installed?(installation_file))
41
+ end
42
+ end
@@ -3,12 +3,12 @@ require './lib/wixgem.rb'
3
3
  require './spec/wixpath.rb'
4
4
  require './spec/test_install.rb'
5
5
  require './spec/test_files_exist.rb'
6
- require 'json'
7
6
 
8
7
  describe 'Wixgem' do
9
8
  #Wix.debug = true
10
9
  describe 'Installation' do
11
10
  test_arguments = {
11
+ test0: ['wixgem_install_test1.msi', ['rakefile.rb']],
12
12
  test1: ['test/wixgem_install_test1.msi', ['rakefile.rb']],
13
13
  test2: ['test/wixgem_install_test2.msi', {manufacturer: 'musco', files: ['Gemfile']}],
14
14
  test3: ['test/wixgem_install_test3.msi', ['rakefile.rb', 'Gemfile']],
@@ -18,7 +18,7 @@ describe 'Wixgem' do
18
18
  test7: ['test/wixgem_install_test7.msi', {product_name: 'test_productname', files: ['Gemfile']}],
19
19
  test8: ['test/wixgem_install_test8.msi', {modify_file_paths: {/\Atest_files\// => ''}, files: Dir.glob("test_files/**/*")}]
20
20
  }
21
-
21
+
22
22
  test_arguments.each { |key, value|
23
23
  it "should create an installation file using: #{value[0]}" do
24
24
  Wix.make_installation(value[0], value[1])
@@ -48,7 +48,7 @@ describe 'Wixgem' do
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
54
  Wix.make_installation('test/wixgem_install_vb6_files.msi', {manufacturer: 'musco', has_vb6_files: true, files: ['rakefile.rb'], debug: true})
@@ -56,4 +56,5 @@ describe 'Wixgem' do
56
56
  expect(wix_cmd_text.include?('-svb6')).to eq(true)
57
57
  end
58
58
  end
59
+
59
60
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wixgem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.30.0
4
+ version: 0.31.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Marshall
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-14 00:00:00.000000000 Z
11
+ date: 2015-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -83,6 +83,7 @@ files:
83
83
  - README.md
84
84
  - example/rakefile.rb
85
85
  - lib/wixgem.rb
86
+ - spec/COM_spec.rb
86
87
  - spec/execute.rb
87
88
  - spec/installation_spec.rb
88
89
  - spec/mergemodule_spec.rb