aaif-goose/goose · error

Update file path not found. Please download the update first

Error message

Update file path not found. Please download the update first.

What it means

In the GitHub-fallback update path (electron-updater failed, release info came from the GitHub API), 'install-update' needs a local path: either githubUpdateInfo.extractedPath (post-extract) or downloadPath. If both are unset the handler throws this — meaning install was invoked before a download ever completed or after state was reset by a new update check (which clears githubUpdateInfo).

Source

Thrown at ui/desktop/src/utils/autoUpdater.ts:283

      trackUpdateDownloadCompleted(false, version, method, errorMessage(error, 'unknown'));
      return {
        success: false,
        error: errorMessage(error, 'Unknown error'),
      };
    }
  });

  ipcMain.handle('install-update', async () => {
    if (isUsingGitHubFallback) {
      // For GitHub fallback, we need to handle the installation differently
      log.info('Installing update from GitHub fallback...');

      try {
        // Use the stored extracted path if available, otherwise download path
        const updatePath = githubUpdateInfo.extractedPath || githubUpdateInfo.downloadPath;

        if (!updatePath) {
          throw new Error('Update file path not found. Please download the update first.');
        }

        // Check if the update path exists
        try {
          await fs.access(updatePath);
        } catch {
          throw new Error('Update file not found. Please download the update first.');
        }

        // Improved dialog with clearer instructions
        const dialogResult = (await dialog.showMessageBox({
          type: 'info',
          title: 'Update Ready to Install',
          message: `Version ${githubUpdateInfo.latestVersion} is ready to install.`,
          detail: `The update has been downloaded and extracted. To complete the installation:\n\n1. Click "Open Folder" to view the new Goose.app\n2. Quit Goose (this app will close)\n3. Drag the new Goose.app to your Applications folder\n4. Replace the existing app when prompted\n\nThe update will be available the next time you launch Goose.`,
          buttons: ['Open Folder & Quit', 'Open Folder Only', 'Cancel'],
          defaultId: 0,
          cancelId: 2,

View on GitHub (pinned to 3810898a74)

Solutions

  1. Run the download step to completion first, then invoke install-update
  2. Avoid triggering another check-for-updates between download and install — it wipes the stored paths
  3. If state is already lost, start over: check for updates, download, then install
  4. UI: disable the install action until a download-success event is observed

Example fix

// renderer: before (install enabled after check only)
const info = await api.checkForUpdates();
if (info.updateInfo) enableInstall();
// after (require completed download)
const info = await api.checkForUpdates();
await api.downloadUpdate(); // sets downloadPath/extractedPath
enableInstall();
Defensive patterns

Strategy: validation

Validate before calling

// Renderer: only enable install after download completes
const res = await api.downloadUpdate();
if (res?.success) enableInstallButton(); // downloadPath/extractedPath now set

Type guard

const hasDownloadedUpdate = (): boolean =>
  Boolean(githubUpdateInfo.extractedPath || githubUpdateInfo.downloadPath); // module-internal

Try / catch

try {
  await window.api.installUpdate();
} catch (e) {
  if (String(e).includes('path not found')) {
    // re-run check-for-updates -> download-update -> install, in order
  }
}

Prevention

When it happens

Trigger: Renderer invokes install-update right after check-for-updates reported an update but before download-update finished; a second check-for-updates ran in between and reset githubUpdateInfo = {}; failed download that never stored downloadPath.

Common situations: UI state machine bugs that enable the Install button before download completes; user retrying install after a failed download without re-downloading; race between auto-check and manual install.

Related errors


AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16). Data as JSON: /api/errors/b67206c380472078. Report an issue: GitHub.