forge icon indicating copy to clipboard operation
forge copied to clipboard

Hyphens ('1.0.1-0') not a valid version string when building on @electron-forge/maker-squirrel

Open gabriel-cloud opened this issue 1 year ago • 2 comments

Pre-flight checklist

  • [X] I have read the contribution documentation for this project.
  • [X] I agree to follow the code of conduct that this project uses.
  • [X] I have searched the issue tracker for a bug that matches the one I want to file, without success.

Electron Forge version

7.3.0

Electron version

v29.1.2

Operating system

Windows 11 23h2

Last known working Electron Forge version

n/a

Expected behavior

Build would be successful using hyphenated version numbers created by npm version prerelease

Actual behavior

An unhandled rejection has occurred inside Forge:
Error: Failed with exit code: 1
Output:
Attempting to build package from 'my_app.nuspec'.
'1.0.1-0' is not a valid version string.
Parameter name: version
at ChildProcess.<anonymous> (D:\dev\versionNumber\my-app\node_modules\electron-winstaller\lib\spawn-promise.js:48:24)
    at ChildProcess.emit (node:events:514:28)
    at ChildProcess.emit (node:domain:488:12)
    at maybeClose (node:internal/child_process:1105:16)
    at ChildProcess._handle.onexit (node:internal/child_process:305:5)

Steps to reproduce

  1. Open a folder
  2. npm init electron-app@latest my-app
  3. cd my-app
  4. npm version prerelease
  5. :white_check_mark: Observe the version is now 1.0.0-0
  6. npm run make
  7. ❌ Observe you get an unhandled exception
  8. This only seems to affect @electron-forge/maker-squirrel . I can build just fine on macOS using @electron-forge/maker-zip
An unhandled rejection has occurred inside Forge:
Error: Failed with exit code: 1
Output:
Attempting to build package from 'my_app.nuspec'.
'1.0.1-0' is not a valid version string.
Parameter name: version
at ChildProcess.<anonymous> (D:\dev\versionNumber\my-app\node_modules\electron-winstaller\lib\spawn-promise.js:48:24)
    at ChildProcess.emit (node:events:514:28)
    at ChildProcess.emit (node:domain:488:12)
    at maybeClose (node:internal/child_process:1105:16)
    at ChildProcess._handle.onexit (node:internal/child_process:305:5)

Additional information

No response

gabriel-cloud avatar Mar 13 '24 09:03 gabriel-cloud

@gabriel-cloud Did you ever find a solution to this? We are experiencing the same issue with our app.

stdavis avatar Oct 17 '24 12:10 stdavis

Sadly, no. Luckily the app we're using is for internal use only. So can do most of the testing on macOS, and when it's ready for use, we just promote the alpha as a patch (npm run patch) and build from that.

gabriel-cloud avatar Oct 18 '24 10:10 gabriel-cloud

Hi, this is an upstream limitation for Windows apps, as they expect v.x.y.z format.

We generally just take the 3-digit Windows apps and append a fourth 0 digit to it.

https://github.com/electron/forge/blob/64d54e895b26691561734f8d26af34de3ffc7fd4/packages/maker/base/src/Maker.ts#L176-L180

However, I see the Squirrel.Windows maker doesn't use that util so maybe this is an enhancement to make.

erickzhao avatar Jan 31 '25 22:01 erickzhao