wixgem 0.17.0 → 0.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/wixgem.rb +32 -9
- data/spec/installation_spec.rb +11 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 534047f23141f404ce3310c55db3c599157cbeb7
|
4
|
+
data.tar.gz: 7574488f9c177562ad081f4fad69e88b8b13e95f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 373487b87ce98a131e59aa09fcbc8f0fb08a058816805299ebb6b0b1fe57c3ae24ca688bb9cc24f837b919bd2f9ba4f3ebd89d02062640d3b2e3d74807affed1
|
7
|
+
data.tar.gz: 6f1444e90174f06dd96aa70f5713502710783dadd00cecb4acd915992298d054108b50b72a5be5be0ea4e828a3cfbcbe9bd7a0ad42e414cca3a3c095bdb559b8
|
data/lib/wixgem.rb
CHANGED
@@ -46,7 +46,6 @@ class Wix
|
|
46
46
|
|
47
47
|
raise 'Hash must have a version key if the hash has a :remove_existing_products key' unless(input.has_key?(:version))
|
48
48
|
raise 'Hash must have an upgrade_code key if the hash has a :remove_existing_products key' unless(input.has_key?(:upgrade_code))
|
49
|
-
|
50
49
|
|
51
50
|
upgrade = product[0].add_element 'Upgrade', { 'Id' => input[:upgrade_code] }
|
52
51
|
upgrade.add_element 'UpgradeVersion', { 'Minimum' => input[:version], 'OnlyDetect'=>'yes', 'Property'=>'NEWPRODUCTFOUND' }
|
@@ -106,6 +105,9 @@ class Wix
|
|
106
105
|
files = input
|
107
106
|
files = input[:files] if(input.kind_of?(Hash))
|
108
107
|
|
108
|
+
raise 'No files were given to wixgem' if(files.length == 0)
|
109
|
+
|
110
|
+
missing_files = []
|
109
111
|
files.each do |file|
|
110
112
|
if(File.file?(file))
|
111
113
|
install_path = file
|
@@ -116,17 +118,27 @@ class Wix
|
|
116
118
|
install_path = "#{directory}/#{install_path}"
|
117
119
|
FileUtils.mkpath(File.dirname(install_path)) unless(Dir.exists?(File.dirname(install_path)))
|
118
120
|
FileUtils.cp(file, install_path)
|
121
|
+
elsif(!File.exists?(file))
|
122
|
+
missing_files.insert(missing_files.length, file)
|
119
123
|
end
|
120
124
|
end
|
125
|
+
|
126
|
+
if(missing_files.length > 0)
|
127
|
+
missing_files_str = ''
|
128
|
+
missing_files.each { |f| msg = "#{missing_files_str}, #{f}" }
|
129
|
+
raise "Missing files: #{missing_files_str}"
|
130
|
+
end
|
121
131
|
end
|
122
132
|
|
123
133
|
def self.create_wxs_file(wxs_file, input, ext)
|
124
|
-
@debug = input[:debug] if(!@debug && input.kind_of?(Hash) && input.has_key?(:debug))
|
125
|
-
|
126
134
|
template_option = "-template product"
|
127
135
|
template_option = "-template module" unless(ext == ".msi")
|
136
|
+
|
137
|
+
wix_cmd = "\"#{install_path}/bin/heat.exe\" dir . #{template_option} -cg InstallionFiles -gg -nologo -srd -o \"#{wxs_file}\""
|
138
|
+
wix_cmd = wix_cmd.gsub(/-srd/, '-svb6 -srd') if(input.kind_of?(Hash) && input.has_key?(:has_vb6_files))
|
139
|
+
File.open("#{File.basename(wxs_file,'.wxs')}.wix_cmds", 'w') { |f| f.puts wix_cmd } if(@debug)
|
128
140
|
|
129
|
-
stdout = %x[
|
141
|
+
stdout = %x[#{wix_cmd}]
|
130
142
|
raise "#{stdout}\nFailed to generate .wxs file" unless(File.exists?(wxs_file))
|
131
143
|
|
132
144
|
product_name = File.basename(wxs_file, '.wxs')
|
@@ -170,18 +182,24 @@ class Wix
|
|
170
182
|
end
|
171
183
|
|
172
184
|
def self.create_output(wxs_file, output)
|
173
|
-
wixobj_file = "#{File.basename(wxs_file)}.wixobj"
|
185
|
+
wixobj_file = "#{File.basename(wxs_file,'.wxs')}.wixobj"
|
174
186
|
|
175
|
-
|
187
|
+
wix_cmd = "\"#{install_path}\\bin\\candle.exe\" -out \"#{wixobj_file}\" \"#{wxs_file}\""
|
188
|
+
File.open("#{File.basename(wxs_file,'.wxs')}.wix_cmds", 'a') { |f| f.puts wix_cmd } if(@debug)
|
189
|
+
stdout = %x[#{wix_cmd}]
|
176
190
|
raise "#{stdout}\nFailed to generate .wixobj file" unless(File.exists?(wixobj_file))
|
177
191
|
|
178
|
-
|
192
|
+
wix_cmd = "\"#{install_path}\\bin\\light.exe\" -nologo -out \"#{output}\" \"#{wixobj_file}\""
|
193
|
+
File.open("#{File.basename(wxs_file,'.wxs')}.wix_cmds", 'a') { |f| f.puts wix_cmd } if(@debug)
|
194
|
+
stdout = %x[#{wix_cmd}]
|
179
195
|
raise "#{stdout}\nFailed to generate #{output} file" unless(File.exists?(output))
|
180
196
|
end
|
181
197
|
|
182
198
|
def self.apply_wix_template(output, input, template)
|
183
199
|
raise 'WIX path is not set!' if(install_path.nil?)
|
184
|
-
|
200
|
+
|
201
|
+
@debug = input[:debug] if(!@debug && input.kind_of?(Hash) && input.has_key?(:debug))
|
202
|
+
|
185
203
|
ext = File.extname(output)
|
186
204
|
basename = File.basename(output, ext)
|
187
205
|
FileUtils.rm(output) if(File.exists?(output))
|
@@ -195,8 +213,13 @@ class Wix
|
|
195
213
|
Dir.chdir(dir) do |current_dir|
|
196
214
|
create_wxs_file(wxs_file, input, ext)
|
197
215
|
create_output(wxs_file, output_absolute_path)
|
216
|
+
|
217
|
+
if(@debug)
|
218
|
+
FileUtils.cp("#{wxs_file}", "#{output_absolute_path}.wxs")
|
219
|
+
wix_cmds_file = "#{File.basename(wxs_file,'.wxs')}.wix_cmds"
|
220
|
+
FileUtils.cp(wix_cmds_file, "#{File.dirname(output_absolute_path)}/#{wix_cmds_file}")
|
221
|
+
end
|
198
222
|
end
|
199
|
-
FileUtils.cp("#{dir}/#{wxs_file}", "#{output_absolute_path}.wxs") if(@debug)
|
200
223
|
end
|
201
224
|
pdb_file = output_absolute_path.gsub(ext,'.wixpdb')
|
202
225
|
FileUtils.rm(pdb_file) if(File.exists?(pdb_file))
|
data/spec/installation_spec.rb
CHANGED
@@ -38,14 +38,22 @@ describe 'Wixgem' do
|
|
38
38
|
describe 'Packaging excptions' do
|
39
39
|
exception_test_arguments = {
|
40
40
|
test1: ['test/wixgem_install_test1.msi', nil],
|
41
|
-
|
42
|
-
|
41
|
+
test2: ['test/wixgem_install_test1.msi', []],
|
42
|
+
test3: ['test/wixgem_install_test1.msi', ['does_not_exist.txt']]
|
43
43
|
}
|
44
44
|
|
45
45
|
exception_test_arguments.each { |key, value|
|
46
|
-
it "should raise an exception" do
|
46
|
+
it "#{key} should raise an exception" do
|
47
47
|
expect { Wix.make_installation(value[0], value[1]) }.to raise_error
|
48
48
|
end
|
49
49
|
}
|
50
50
|
end
|
51
|
+
|
52
|
+
describe 'includding vb6 files' do
|
53
|
+
it "the wix's heat command should contain the -svb6 flag" do
|
54
|
+
Wix.make_installation('test/wixgem_install_vb6_files.msi', {manufacturer: 'musco', has_vb6_files: true, files: ['rakefile.rb'], debug: true})
|
55
|
+
wix_cmd_text = File.read('test/wixgem_install_vb6_files.wix_cmds')
|
56
|
+
expect(wix_cmd_text.include?('-svb6')).to eq(true)
|
57
|
+
end
|
58
|
+
end
|
51
59
|
end
|