stablyai/orca · error

Windows inner executable does not exist: ${executablePath}

Error message

Windows inner executable does not exist: ${executablePath}

What it means

Thrown by validateExecutablePath() when the provided path passes the string check but existsSync() returns false. The executable file does not exist at the given path. This is a filesystem-level check before any PowerShell invocation.

Source

Thrown at config/scripts/verify-windows-inner-signature.mjs:124

export function formatSignatureSummary(signature) {
  return [
    `Status: ${signature.status ?? '<missing>'}`,
    `Subject: ${normalizeSignerSubject(signature.signerSubject) || '<missing>'}`,
    `Issuer: ${signature.signerIssuer ?? '<missing>'}`,
    `Thumbprint: ${normalizeThumbprint(signature.signerThumbprint) || '<missing>'}`,
    `NotBefore: ${signature.notBefore ?? '<missing>'}`,
    `NotAfter: ${signature.notAfter ?? '<missing>'}`
  ].join('\n')
}

export function validateExecutablePath(executablePath) {
  if (typeof executablePath !== 'string' || executablePath.trim() === '') {
    throw new Error('Usage: node config/scripts/verify-windows-inner-signature.mjs <Orca.exe>')
  }

  if (!existsSync(executablePath)) {
    throw new Error(`Windows inner executable does not exist: ${executablePath}`)
  }

  if (!statSync(executablePath).isFile()) {
    throw new Error(`Windows inner executable path is not a file: ${executablePath}`)
  }
}

export function getPowerShellSignatureJson(executablePath, spawnSyncImpl = spawnSync) {
  // Why: pwsh -Command does not reliably expose trailing process args to string commands.
  const result = spawnSyncImpl(
    'pwsh',
    [
      '-NoLogo',
      '-NoProfile',
      '-NonInteractive',
      '-ExecutionPolicy',
      'Bypass',
      '-Command',

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Verify the path exists: use the absolute path to the inner Orca.exe (not the Squirrel setup wrapper).
  2. Ensure the build/packaging step that produces Orca.exe runs before the signature verifier.
  3. If using a relative path, check it resolves against the expected cwd — prefer an absolute path.

Example fix

// before: path points to outer wrapper or wrong dir
node verify-windows-inner-signature.mjs ./Release/Orca.exe

// after: absolute path to the actual inner executable
node verify-windows-inner-signature.mjs "$PWD/Release/win-unpacked/Orca.exe"
Defensive patterns

Strategy: validation

Validate before calling

function assertExecutableExists(path) {
  if (!existsSync(path)) {
    throw new Error(`Expected Orca.exe not found at: ${path}. Build may not have completed.`)
  }
}

Type guard

function isExistingPath(path) {
  try { return existsSync(path) } catch { return false }
}

Prevention

When it happens

Trigger: validateExecutablePath(executablePath) where executablePath is a non-empty string but existsSync(executablePath) is false. Caused by: a wrong path, a build step that hasn't produced Orca.exe yet, a relative path resolved against the wrong cwd, or a packaging pipeline pointing to the wrong output directory.

Common situations: CI running the verifier before the build step completes; a path pointing to the outer Squirrel/MSIX wrapper when the inner exe is expected; a relative path that resolves differently on the CI runner; a post-cleanup step that removed the file.

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/c8c36ae6e9623f6d. Report an issue: GitHub.