crosspack 0.2.0 → 0.2.1

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
  SHA256:
3
- metadata.gz: cb2e2fb91b4f2215649e739ff6ec7128a11e06abe8d776f870d686261439a974
4
- data.tar.gz: 3b17f1325d46d5147a0d87fee2d62ee2cb021f4a11c4ab16cf54a94562d843ad
3
+ metadata.gz: b365ad4ba6ab874d40dec1ef153ab18104f329ee6ebb7a638a27267089eb7c43
4
+ data.tar.gz: c8b0eef099fecc0f97f7964560e093812fe50e7627bb5a092bfadcbf8322f668
5
5
  SHA512:
6
- metadata.gz: 19cfe0db0863bff0e3b69d39ccefd0066ae99a85586ae8cabe19951897f0852b70966cc39372740a9a7e779ad36c81827797094befe8e292c7f420d1a17a0578
7
- data.tar.gz: 9b220eff4186f4f1f88875d0b802c0d7a76f1b5d394e0ec828706a2e56d71676f809c1726de82e39f950ad323056b73104c9022c9fa181f554830817748dd612
6
+ metadata.gz: 7c3d441c8d44206115a24ca0668843781b97631fdf3064a933d51709735911153861057bd0efa81b99406d4276b7c92b70993f12905b6e4ac6e9012b39db1f1d
7
+ data.tar.gz: d5bc914e071fd1be81b6cd1703b3120ce3d260a2a94188bba34b3b13f8e672f271d24c985642f43005fde6dbefc4dca542f67b74b213631eba071958e7e02a1f
data/CHANGELOG.md CHANGED
@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.2.1] - 2026-09-11
9
+
10
+ ### Fixed
11
+ - WiX builder: `wix build` is now invoked with `-arch <arch>` as separate
12
+ argv entries — the previous single `"-arch x64"` argument could never parse.
13
+ - WiX builder: a bare `dotnet` on PATH is no longer mistaken for the WiX
14
+ toolset (`dotnet build` cannot build an MSI); only a real `wix` command
15
+ triggers the real MSI build, otherwise the `.wxs` + `BUILD-MSI.txt`
16
+ fallback is emitted.
17
+ - WiX builder: manifest values (name, maintainer, summary) are XML-escaped
18
+ in the generated `.wxs`; a maintainer like `Name <email>` previously
19
+ produced invalid XML no WiX build could parse.
20
+
8
21
  ## [0.2.0] - 2026-09-08
9
22
 
10
23
  ### Added
@@ -27,8 +27,17 @@ module Crosspack
27
27
  "#{hex[0, 8]}-#{hex[8, 4]}-#{hex[12, 4]}-#{hex[16, 4]}-#{hex[20, 12]}"
28
28
  end
29
29
 
30
+ # Escapes XML entities so manifest values (e.g. a maintainer with
31
+ # "Name <email>") never break the generated .wxs.
32
+ def self.escape(text)
33
+ text.to_s.gsub('&', '&amp;').gsub('<', '&lt;').gsub('>', '&gt;').gsub('"', '&quot;')
34
+ end
35
+
30
36
  def self.generate_wxs(name:, version:, manufacturer:, summary:, files:,
31
37
  arch: 'x64')
38
+ name = escape(name)
39
+ manufacturer = escape(manufacturer)
40
+ summary = escape(summary)
32
41
  directory = arch == 'arm64' ? 'ProgramFiles6432Folder' : 'ProgramFiles64Folder'
33
42
  components = files.values.each_with_index.map do |dst, i|
34
43
  src = files.key(dst).gsub('/', '\\')
@@ -97,7 +106,7 @@ module Crosspack
97
106
  return wxs_path
98
107
  end
99
108
 
100
- out, status = Open3.capture2e(wix, 'build', "-arch #{arch}",
109
+ out, status = Open3.capture2e(wix, 'build', '-arch', arch.to_s,
101
110
  '-o', output, wxs_path)
102
111
  unless status.success?
103
112
  raise BuildError, "wix build failed to build #{output}:\n#{out}"
@@ -105,11 +114,12 @@ module Crosspack
105
114
  output
106
115
  end
107
116
 
117
+ # WiX v4+ is a .NET tool invoked as `wix` (dotnet tool install -g wix);
118
+ # plain `dotnet` cannot build an MSI, so it is not a fallback.
108
119
  def self.wix_command
109
- %w[wix dotnet].each do |cmd|
110
- _, _, status = Open3.capture3(cmd, '--version')
111
- return cmd if status.success?
112
- end
120
+ _, _, status = Open3.capture3('wix', '--version')
121
+ return 'wix' if status.success?
122
+
113
123
  nil
114
124
  rescue Errno::ENOENT
115
125
  nil
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Crosspack
4
- VERSION = '0.2.0'
4
+ VERSION = '0.2.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crosspack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg Orlov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-09-08 00:00:00.000000000 Z
11
+ date: 2026-09-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'Two cooperating commands: crossbuild runs the build steps of a project
14
14
  from a build.yaml matrix and fans the produced artifacts out into the per-target