wixgem 0.59.0 → 0.62.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 +4 -4
- data/example/example.msi +0 -0
- data/example/example.msi.log +15 -0
- data/example/example.msi.wxs +16 -0
- data/example/example.msm +0 -0
- data/example/rakefile.rb +3 -3
- data/lib/shortcut.rb +6 -9
- data/lib/shortcut.rb.kev +129 -0
- data/lib/wixgem.rb +1 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b6b2f61ea32efb419ef261aba962de55b9dec07
|
4
|
+
data.tar.gz: a6475f9f4c3f836c333ca324cbd0b123eb713e9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f00a242f5f8aa952448708b09aaf3044fe20cf12a3bc88f60628bfd2265e0166fef0bbb721fdc9d1b10960fe174a519abdc4556419d7c965ee32e7c0c3f13c8
|
7
|
+
data.tar.gz: 67311a57be6cf3084e23bf0463cc7529a98674c4d3e6d844e38dd32dc9053d6bcfd8c90c854e5b50b940742ae5de3dd15c370285d8a6ca75fa9ad90ded8df839
|
data/example/example.msi
CHANGED
Binary file
|
@@ -0,0 +1,15 @@
|
|
1
|
+
------------------------------------ Installation Paths -----------------------------------
|
2
|
+
File path Installation Path
|
3
|
+
./example.msm ./example.msm
|
4
|
+
-------------------------------------------------------------------------------------------
|
5
|
+
----------------------------------------------------------------------------
|
6
|
+
{:output=>"", :error=>"", :exit_code=>0, :ignore_exit_code=>false, :debug=>false, :quiet=>true, :command=>"\"C:\\Development\\dep\\OpenSource\\WixToolset\\3.9/bin/heat.exe\" dir . -template product -cg InstallionFiles -gg -nologo -srd -o \"example.wxs\""}
|
7
|
+
----------------------------------------------------------------------------
|
8
|
+
{:output=>"Windows Installer XML Toolset Compiler version 3.9.1006.0\nCopyright (c) Outercurve Foundation. All rights reserved.\n\nexample.wxs\n", :error=>"", :exit_code=>0, :ignore_exit_code=>false, :debug=>false, :quiet=>true, :command=>"\"C:\\Development\\dep\\OpenSource\\WixToolset\\3.9/bin/candle.exe\" -out \"example.wixobj\" \"example.wxs\""}
|
9
|
+
--------------------------- std output -----------------------------------
|
10
|
+
Windows Installer XML Toolset Compiler version 3.9.1006.0
|
11
|
+
Copyright (c) Outercurve Foundation. All rights reserved.
|
12
|
+
|
13
|
+
example.wxs
|
14
|
+
----------------------------------------------------------------------------
|
15
|
+
{:output=>"", :error=>"", :exit_code=>0, :ignore_exit_code=>false, :debug=>false, :quiet=>true, :command=>"\"C:\\Development\\dep\\OpenSource\\WixToolset\\3.9/bin/light.exe\" -nologo -out \"E:/Development/wrk/github/wixgem/example/example.msi\" \"example.wixobj\""}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<?xml version='1.0' encoding='UTF-8'?>
|
2
|
+
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
|
3
|
+
<Product Id='{53554FC3-4143-48A8-82D9-9D39442FABBC}' Language='1033' Manufacturer='Not Set' Name='example' UpgradeCode='{a62c35a7-6a6d-4392-822b-f6aca7eef88b}' Version='0.62.0'>
|
4
|
+
<Package Compressed='yes' InstallerVersion='450'/>
|
5
|
+
<Directory Id='TARGETDIR' Name='SourceDir'><Merge DiskId='1' Id='merge2F9F417DD98EE2C2308398A4A8E9E006' Language='1033' SourceFile='.\example.msm'/></Directory>
|
6
|
+
<Feature Id='ProductFeature' Level='1' Title='Files to Install'>
|
7
|
+
<ComponentGroupRef Id='InstallionFiles'/>
|
8
|
+
<MergeRef Id='merge2F9F417DD98EE2C2308398A4A8E9E006'/></Feature>
|
9
|
+
<Media Cabinet='product.cab' EmbedCab='yes' Id='1'/>
|
10
|
+
<CustomAction Execute='firstSequence' Id='SetTARGETDIR' Property='TARGETDIR' Return='check' Value='[ProgramFilesFolder][ProductName]'/><InstallExecuteSequence><Custom Action='SetTARGETDIR' Before='CostInitialize'/></InstallExecuteSequence><InstallUISequence><Custom Action='SetTARGETDIR' Before='CostInitialize'/></InstallUISequence><AdminExecuteSequence><Custom Action='SetTARGETDIR' Before='CostInitialize'/></AdminExecuteSequence><AdminUISequence><Custom Action='SetTARGETDIR' Before='CostInitialize'/></AdminUISequence></Product>
|
11
|
+
<Fragment>
|
12
|
+
<ComponentGroup Id='InstallionFiles'>
|
13
|
+
|
14
|
+
</ComponentGroup>
|
15
|
+
</Fragment>
|
16
|
+
</Wix>
|
data/example/example.msm
CHANGED
Binary file
|
data/example/rakefile.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'wixgem'
|
2
2
|
|
3
|
-
|
4
|
-
Wixgem::Wix.install_path = '<Path to the root directory of the wix toolset>'
|
3
|
+
Wixgem::Wix.install_path = 'C:\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')
|
@@ -20,7 +20,7 @@ desc "Generate an installation msi file"
|
|
20
20
|
task :installation => [:mergemodule] do
|
21
21
|
installation_files = Dir.glob('./example.msm')
|
22
22
|
Wixgem::Wix.make_installation("./example.msi",
|
23
|
-
{ upgrade_code: '{a62c35a7-6a6d-4392-822b-f6aca7eef88b}',
|
23
|
+
{ upgrade_code: '{a62c35a7-6a6d-4392-822b-f6aca7eef88b}', debug: true,
|
24
24
|
files: installation_files }
|
25
25
|
)
|
26
26
|
end
|
data/lib/shortcut.rb
CHANGED
@@ -28,18 +28,15 @@ class Shortcut
|
|
28
28
|
shortcut_element.attributes['Arguments'] = @hash[:arguments] if(@hash.has_key?(:arguments))
|
29
29
|
|
30
30
|
shortcut_name = File.basename(@file)
|
31
|
-
|
31
|
+
if(@hash.has_key?(:name))
|
32
|
+
shortcut_name = @hash[:name]
|
33
|
+
else
|
34
|
+
@hash[:name] = shortcut_name
|
35
|
+
end
|
32
36
|
shortcut_element.attributes['Name'] = shortcut_name
|
33
37
|
|
34
38
|
shortcut_element.attributes['Description'] = @hash[:description] if(@hash.has_key?(:description))
|
35
|
-
|
36
|
-
case @hash[:directory]
|
37
|
-
when :desktop
|
38
|
-
shortcut_element.attributes['Directory'] = 'DesktopFolder'
|
39
|
-
else
|
40
|
-
shortcut_element.attributes['Directory'] = @hash[:directory]
|
41
|
-
end
|
42
|
-
end
|
39
|
+
shortcut_element.attributes['Directory'] = 'DesktopFolder'
|
43
40
|
|
44
41
|
shortcut_element.attributes['Advertise']="yes"
|
45
42
|
shortcut_element.attributes['Advertise'] = "no" if(@hash.has_key?(:advertise) && !@hash[:advertise])
|
data/lib/shortcut.rb.kev
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
require 'rexml/document'
|
2
|
+
require 'SecureRandom'
|
3
|
+
|
4
|
+
module Wixgem
|
5
|
+
|
6
|
+
class Shortcut
|
7
|
+
|
8
|
+
def initialize(file, hash)
|
9
|
+
@file = file
|
10
|
+
@hash = hash
|
11
|
+
end
|
12
|
+
|
13
|
+
def create(xml_doc)
|
14
|
+
raise "Shortcut #{@file} does not exist" unless(File.exists?(@file))
|
15
|
+
|
16
|
+
file_elements = REXML::XPath.match(xml_doc, "//File[@Source='.\\#{@file.gsub(/\//,'\\')}']")
|
17
|
+
raise "Shortcut #{@file} does not match an installation file" if(file_elements.length == 0)
|
18
|
+
|
19
|
+
case @hash[:directory]
|
20
|
+
when :desktop
|
21
|
+
create_file_shortcut(file_elements[0])
|
22
|
+
xml_doc = create_desktop_folder(xml_doc)
|
23
|
+
# when :start_menu
|
24
|
+
# program_files_element = create_start_menu_shortcut(xml_doc)
|
25
|
+
# create_start_menu_item(program_files_element)
|
26
|
+
else
|
27
|
+
raise 'Support for #{:directory} shortcut has not been added'
|
28
|
+
end
|
29
|
+
|
30
|
+
return xml_doc
|
31
|
+
end
|
32
|
+
|
33
|
+
def create_file_shortcut(file_element)
|
34
|
+
shortcut_element = file_element.add_element 'Shortcut'
|
35
|
+
|
36
|
+
shortcut_element.attributes['Id'] = "Shortcut_#{SecureRandom.uuid.gsub(/-/,'')}"
|
37
|
+
shortcut_element.attributes['Arguments'] = @hash[:arguments] if(@hash.has_key?(:arguments))
|
38
|
+
|
39
|
+
shortcut_name = File.basename(@file)
|
40
|
+
if(@hash.has_key?(:name))
|
41
|
+
shortcut_name = @hash[:name]
|
42
|
+
else
|
43
|
+
@hash[:name] = shortcut_name
|
44
|
+
end
|
45
|
+
shortcut_element.attributes['Name'] = shortcut_name
|
46
|
+
|
47
|
+
shortcut_element.attributes['Description'] = @hash[:description] if(@hash.has_key?(:description))
|
48
|
+
shortcut_element.attributes['Directory'] = 'DesktopFolder'
|
49
|
+
|
50
|
+
shortcut_element.attributes['Advertise']="yes"
|
51
|
+
shortcut_element.attributes['Advertise'] = "no" if(@hash.has_key?(:advertise) && !@hash[:advertise])
|
52
|
+
create_icon_element(shortcut_element) if(@hash.has_key?(:icon))
|
53
|
+
|
54
|
+
return shortcut_element
|
55
|
+
end
|
56
|
+
|
57
|
+
def create_icon_element(shortcut_element)
|
58
|
+
icon_element = shortcut_element.add_element 'Icon'
|
59
|
+
icon_element.attributes['Id'] = File.basename(@hash[:icon])
|
60
|
+
icon_element.attributes['SourceFile'] = ".\\#{@hash[:icon].gsub(/\//, '\\')}"
|
61
|
+
return icon_element
|
62
|
+
end
|
63
|
+
|
64
|
+
def create_desktop_folder(xml_doc)
|
65
|
+
desktop_elements = REXML::XPath.match(xml_doc, "//DesktopFolder")
|
66
|
+
if(desktop_elements.length == 0)
|
67
|
+
wix_elements = REXML::XPath.match(xml_doc, "//Wix")
|
68
|
+
fragment_element = wix_elements[0].add_element 'Fragment'
|
69
|
+
target_dir = fragment_element.add_element 'DirectoryRef', { 'Id' => 'TARGETDIR' }
|
70
|
+
target_dir.add_element 'Directory', { 'Id' => 'DesktopFolder', 'Name' => 'Desktop' }
|
71
|
+
end
|
72
|
+
return xml_doc
|
73
|
+
end
|
74
|
+
|
75
|
+
# def create_start_menu_shortcut(program_folder_element)
|
76
|
+
# puts "1"
|
77
|
+
# shortcut_element = program_folder_element.add_element 'Shortcut'
|
78
|
+
#
|
79
|
+
# shortcut_element.attributes['Id'] = 'ApplicationStartMenuShortcut'
|
80
|
+
#
|
81
|
+
# shortcut_name = File.basename(@file)
|
82
|
+
# ext = File.extname(@file)
|
83
|
+
# if(@hash.has_key?(:name))
|
84
|
+
# shortcut_name = @hash[:name]
|
85
|
+
# else
|
86
|
+
# shortcut_name = File.basename(shortcut_name, ext) if(ext != '')
|
87
|
+
# @hash[:name] = shortcut_name
|
88
|
+
# end
|
89
|
+
# shortcut_element.attributes['Name'] = shortcut_name
|
90
|
+
|
91
|
+
# puts "2"
|
92
|
+
# shortcut_element.attributes['Description'] = @hash[:description] if(@hash.has_key?(:description))
|
93
|
+
# shortcut_element.attributes['Target'] = @file
|
94
|
+
#
|
95
|
+
# puts "3"
|
96
|
+
# remove_folder_element = program_folder_element.add_element 'RemoveFolder'
|
97
|
+
# remove_folder_element.attributes['Id'] = 'ApplicationProgramsFolder'
|
98
|
+
# remove_folder_element.attributes['On'] = 'uninstall'
|
99
|
+
|
100
|
+
# puts "4"
|
101
|
+
# registry_folder_element = program_folder_element.add_element 'RegistryValue'
|
102
|
+
# remove_folder_element.attributes['Root'] = 'HKCU'
|
103
|
+
# remove_folder_element.attributes['Key'] = "Software\\Microsoft\\#{shortcut_name.gsub(/ /,'')}"
|
104
|
+
# remove_folder_element.attributes['Name'] = 'installed'
|
105
|
+
# remove_folder_element.attributes['Type'] = 'integer'
|
106
|
+
# remove_folder_element.attributes['Value'] = '1'
|
107
|
+
# remove_folder_element.attributes['KeyPath'] = 'yes'
|
108
|
+
|
109
|
+
# return shortcut_element
|
110
|
+
# end
|
111
|
+
|
112
|
+
# def create_start_menu_component(xml_doc)
|
113
|
+
# app_programs_elements = REXML::XPath.match(xml_doc, "//ApplicationProgramsFolder")
|
114
|
+
# app_programs_element = nil
|
115
|
+
# if(app_programs_elements.length == 0)
|
116
|
+
# wix_elements = REXML::XPath.match(xml_doc, "//Wix")
|
117
|
+
# fragment_element = wix_elements[0].add_element 'Fragment'
|
118
|
+
# app_programs_element = fragment_element.add_element 'DirectoryRef', { 'Id' => 'ApplicationProgramsFolder' }
|
119
|
+
# else if(app_programs_elements.length == 1)
|
120
|
+
# app_programs_element = app_programs_elements[0]
|
121
|
+
# else
|
122
|
+
# raise "Wix file contains multiple ApplicationProgramsFolder's"
|
123
|
+
# end
|
124
|
+
|
125
|
+
# return app_programs_element.add_element 'Component', { 'Id' => 'ApplicationShortcut', 'Guid' => '{a9e94876-60b5-4038-8baa-ea76a3f9ebe1}' }
|
126
|
+
# end
|
127
|
+
end
|
128
|
+
|
129
|
+
#end
|
data/lib/wixgem.rb
CHANGED
@@ -80,6 +80,7 @@ class Wix
|
|
80
80
|
product = REXML::XPath.match(xml_doc, '//Wix/Product')
|
81
81
|
return xml_doc if(product.length == 0)
|
82
82
|
|
83
|
+
product[0].add_element 'SetProperty', { 'Id' => 'ARPINSTALLLOCATION', 'Value' => '#{install_path}', 'After' => 'CostFinalize', 'Sequence' => 'both' }
|
83
84
|
product[0].add_element 'CustomAction', { 'Id' => 'SetTARGETDIR', 'Property' => 'TARGETDIR', 'Value' => "#{install_path}", 'Execute' => 'firstSequence', 'Return' => 'check'}
|
84
85
|
|
85
86
|
install_execute_sequence = product[0].add_element 'InstallExecuteSequence'
|
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.
|
4
|
+
version: 0.62.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-
|
11
|
+
date: 2015-11-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -76,6 +76,8 @@ files:
|
|
76
76
|
- LICENSE
|
77
77
|
- README.md
|
78
78
|
- example/example.msi
|
79
|
+
- example/example.msi.log
|
80
|
+
- example/example.msi.wxs
|
79
81
|
- example/example.msm
|
80
82
|
- example/install_files/directory/file2.txt
|
81
83
|
- example/install_files/file1.txt
|
@@ -84,6 +86,7 @@ files:
|
|
84
86
|
- lib/command.rb
|
85
87
|
- lib/file.rb
|
86
88
|
- lib/shortcut.rb
|
89
|
+
- lib/shortcut.rb.kev
|
87
90
|
- lib/wixgem.rb
|
88
91
|
homepage: http://rubygems.org/gems/wixgem
|
89
92
|
licenses:
|