Description
Problem
When additional arguments are passed via signWithParams
, they are parsed into arguments using RegExp.
windows-sign/src/sign-with-signtool.ts
Lines 67 to 69 in 2605684
For example, signWithParams: '/n "My Awesome Company"'
is parsed into ['/n', '"My Awesome Company"']
. Double quotes are kept in place as the arg value. Then it's passed into signtool
via Node.js fork
, it's passed as an argument.
As a result, signtool
receives value with double quotes "My Awesome Company"
instead of the actual value My Awesome Company
.
Same problem with device tokens and /csp
, /kc
params.
Proposals
1. Don't parse signWithParams
Currently params from the result of parsing are never used individually.
extraArgs.push(options.signWithParams)
2. Parse params with values
extraArgs.push(...[...options.signWithParams.matchAll(/(?:([^\s"]+)|"([^"]*)")+/g)].map((matched) => matched[1] || matched[2]));
Then it results into ['/n', 'My Awesome Company']
instead of ['/n', '"My Awesome Company"']
3. use windowsVerbatimArguments: true
and quote other params instead
Solve the problem the other way around — quote args provided from @electron/windows-sign
.
I'd prefer option 2, as it allows fixing another issue.
I'm ready to prove a PR, if that's ok.