zed-industries/zed · error
failed to start installer: {:?}
Error message
failed to start installer: {:?} What it means
Windows install step: the downloaded installer is executed with `/verysilent /update=true /MERGETASKS=!desktopicon`; a non-zero exit code fails with the installer's stderr. The helper path (auto_update_helper.exe) is only returned on success.
Source
Thrown at crates/auto_update/src/auto_update.rs:1280
.parent()
.context("No parent dir for Zed.exe")?
.to_owned();
// keep in sync with crates/auto_update_helper/src/updater.rs
_ = smol::fs::remove_dir(parent.join("updates")).await;
_ = smol::fs::remove_dir(parent.join("install")).await;
_ = smol::fs::remove_dir(parent.join("old")).await;
Ok(())
}
async fn install_release_windows(downloaded_installer: &Path) -> Result<Option<PathBuf>> {
let mut cmd = new_command(downloaded_installer);
cmd.arg("/verysilent")
.arg("/update=true")
.arg("/MERGETASKS=!desktopicon");
let output = cmd.output().await?;
anyhow::ensure!(
output.status.success(),
"failed to start installer: {:?}",
String::from_utf8_lossy(&output.stderr)
);
// We return the path to the update helper program, because it will
// perform the final steps of the update process, copying the new binary,
// deleting the old one, and launching the new binary.
let helper_path = std::env::current_exe()?
.parent()
.context("No parent dir for Zed.exe")?
.join("tools")
.join("auto_update_helper.exe");
Ok(Some(helper_path))
}
pub async fn finalize_auto_update_on_quit() {
let Some(installer_path) = std::env::current_exe()
.ok()View on GitHub (pinned to bc538def45)
Solutions
- Retry the update; transient installer exits (locked files) often clear.
- Run the downloaded installer manually from the installer temp dir to see its UI error.
- Whitelist Zed in antivirus/endpoint protection.
- Ensure the user can write to the install directory or reinstall per-user.
Defensive patterns
Strategy: retry
Validate before calling
anyhow::ensure!(downloaded_installer.exists(), "installer binary missing");
if is_process_running("Zed-setup.exe") {
// wait or terminate before launching a second silent install
} Try / catch
on "failed to start installer", retry once after other installer instances exit; if antivirus is suspected, prompt to whitelist and re-run; as a last resort, launch the installer UI manually to read the error.
Prevention
- Whitelist the Zed install dir and downloads in antivirus
- Do not launch updates from two places at once
- Keep write access to the install directory
When it happens
Trigger: The Inno Setup installer exits non-zero - elevation denied for the install location, antivirus blocking the new installer binary, another installer instance running, or a corrupted download.
Common situations: Antivirus quarantining the freshly downloaded installer; insufficient privileges writing to the install dir; a previous Zed installer still running; partial download.
Related errors
- failed to copy Zed update from {:?} to {:?}: {:?}
- failed to copy app: {:?}
- Autoupdate failed, nothing to rollback
- Job rollback failed, the app might be left in an inconsisten
- Autoupdate failed, rollback successful
AI-assisted analysis of zed-industries/zed@bc538def45 (2026-08-16).
Data as JSON: /api/errors/54971d2aadcd5ec9.
Report an issue: GitHub.