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
- Run the download step to completion first, then invoke install-update
- Avoid triggering another check-for-updates between download and install — it wipes the stored paths
- If state is already lost, start over: check for updates, download, then install
- 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
- Enforce check -> download -> install ordering in the UI state machine
- Never trigger check-for-updates while an update is downloaded-but-uninstalled (it resets state)
- Persist download path across restarts if install can happen later
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
- Auto-updater not initialized. Please restart the application
- Update file not found. Please download the update first.
- ACP URL is not available
- This window's Goose backend stopped. Close this window and o
- GitHub API returned ${response.status}: ${response.statusTex
AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16).
Data as JSON: /api/errors/b67206c380472078.
Report an issue: GitHub.