Validation-Executable-Error: Squirrel (Update.exe / squirrel.exe) and app exe exit -1 during WinGetSvc validation (PhraseVault)
Problem
My submission PR fails repo validation with Validation-Executable-Error even though the installer works locally.
PR: https://github.com/microsoft/winget-pkgs/pull/319203 Pipeline: WinGetSvc-Validation-122-319203-20251215-1 Validator build: 1184
Failure output: Executable C:\Users\Validator\AppData\Local\PhraseVault\Update.exe returned exit code: -1 Executable C:\Users\Validator\AppData\Local\PhraseVault\PhraseVault.exe returned exit code: -1 Executable C:\Users\Validator\AppData\Local\PhraseVault\app-2.2.2\squirrel.exe returned exit code: -1 (0xFFFFFFFF / 4294967295 / “Cancel”)
Package / installer details
- App: PhraseVault
- Tech: Electron Forge + Squirrel.Windows (creates PhraseVault.exe + Update.exe + squirrel.exe)
- Signed: Certum code signing cert
Local verification
- Clean Win11 Hyper-V VM: install works; app runs.
- SmartScreen no longer appears when installing/running locally.
- winget validate + winget install --manifest works locally.
Suspected cause
Initially thought it was blocked by SmartScreen due to change to Squirrel Installer and new Certificate Repo validation appears to execute installed EXEs directly (without args / without interactive UI context). Squirrel helper binaries (Update.exe / squirrel.exe) and/or the app stub may return -1 when launched this way.
Ask
- Is this a known/expected false-positive for Squirrel/Electron packages in WinGetSvc validation?
- What is the recommended way to get Squirrel-based packages through validation?
- Ignore Squirrel helper EXEs during validation?
- Invoke with specific args (e.g. --help/--version) instead of bare execution?
- Other manifest metadata that avoids probing these binaries?
- If you need extra diagnostics from me, tell me what to capture and where to paste it.
Squirrel is unmaintained and doesn't work well with WinGet due to Squirrel/Squirrel.Windows#1187. I would highly recommend building your installer with something else.
The error from the pipeline you're getting is due to some of the EXEs returning a non-zero exit code. This usually happens with CLI applications when invoked with no arguments. An admin will remove the label if the package works correctly.
Thank you for the insight. ElectronForge is the official best practice for building electron apps and Squirrel is the official best practice maker for ElectronForge.
So it's a bad timing situation 😬😅
Velopack might replace it though.
Out of curiosity, what will be the process for publishing some minor updates like 2.2.3 of my application? I can't switch installers that fast, but I would need to publish small improvements. Do I need to open an issue each time or simply wait on the pull request?
No issue is needed. Just open a PR with the new version.
Hi @ptmrio,
The installer isn't the issue here - the application installed normally and gave something of an expected error when launched, from the run logs that you've reposted in this Isuse. The issue is that the validation pipelines were built with Windows Forms in mind, and run applications without arguments. For most CLI applications, being run without arguments returns an error about the missing arguments. Usually this results in an exit code between 0 and 1000, however it might have happened in #319203 as well, with the -1 exit code.
Compounding this is that the repo currently holds a large volume of PRs in a similar state - having an error label applied to them, and needing some form of attention, but probably capable of being merged.
My log analysis tool didn't find any specific errors in the run artifacts, so I've updated labels and approved the PR. If it's okay with you, I'd like to reopen and merge the PR.
Hi thank you.
Although squirrel is still recommended on electron forge it seems to be a dead end.
I would suggest NOT merging and ommiting 2.2.2 as it could produce more problems than it solves.
With 2.2.3 we switched to velopack and it worked surprisingly well.
Thank you for your help. I am deeply sorry for the inconvenience caused.
I hope electron updates the recommendations soon to avoid this problem in the future.
Thanks again.
Gerhard