diff --git a/lib/system-status.js b/lib/system-status.js index d36ea60..57877a8 100644 --- a/lib/system-status.js +++ b/lib/system-status.js @@ -174,22 +174,13 @@ customElements.define('system-status', class extends HTMLElement { fs.writeFileSync(cmdtmp, `@echo off\n"${runtime}" %*`) fs.renameSync(cmdtmp, path.join(BIN, 'pear.cmd')) return new Promise((resolve, reject) => { - spawn('cmd', ['/c', `setx PATH "${BIN};%PATH%"`]).on('exit', (code) => { - const codes = [code] - spawn('powershell', ['-Command', `$env:PATH = "${BIN};$env:PATH"`]).on('exit', (code) => { - codes.push(code) - if (codes[0] + codes[1] !== 0) { - reject(new Error( - 'Failed to set PATH in' + [ - codes[0] ? ' cmd - exit code: ' + codes[0] : '', - codes[1] ? ' powershell - exit code:' + codes[1] : '' - ].filter(Boolean) - )) - return - } - process.env.PATH = `${BIN};${process.env.PATH}` - resolve() - }) + spawn('powershell', ['-Command', `[System.Environment]::SetEnvironmentVariables("PATH", "${BIN};${process.env.PATH}", "User")`]).on('exit', (code) => { + if (code !== 0) { + reject(new Error('Failed to set PATH')) + return + } + process.env.PATH = `${BIN};${process.env.PATH}` + resolve() }) }) }