DioxusLabs/dioxus · error · anyhow::Error

light.exe completed but MSI not found at {}

Error message

light.exe completed but MSI not found at {}

What it means

Post-condition guard in bundle_windows_msi: light.exe reported success (exit code 0), but the expected MSI file is not present at the computed output path. This means the linker's success was misleading — the output was written elsewhere, named differently, or was not produced — and the input at fault is the expected output_path versus what light actually emitted.

Source

Thrown at packages/cli/src/bundler/windows.rs:341

            .with_context(|| format!("Failed to run light.exe at {}", light.display()))?;

        if !light_output.status.success() {
            let stderr = String::from_utf8_lossy(&light_output.stderr);
            let stdout = String::from_utf8_lossy(&light_output.stdout);
            bail!(
                "light.exe failed (exit code {:?}):\nstdout: {}\nstderr: {}",
                light_output.status.code(),
                stdout,
                stderr
            );
        }

        if can_sign_windows(&windows_settings) {
            self.try_sign_windows(&output_path).await?;
        }

        if !output_path.exists() {
            bail!(
                "light.exe completed but MSI not found at {}",
                output_path.display()
            );
        }

        tracing::info!("MSI installer created: {}", output_path.display());
        Ok(vec![output_path])
    }

    /// Build a Windows installer executable using NSIS.
    ///
    /// NSIS packaging follows the same broad staging pattern as MSI bundling, but the
    /// installer behavior is expressed through a generated `.nsi` script rather than
    /// WiX XML.
    ///
    /// The method performs these steps:
    /// 1. Resolve the `makensis` binary prepared during tool resolution.
    /// 2. Create an `_staging` directory containing the main executable, copied

View on GitHub (pinned to 24f6a829df)

Solutions

  1. light.exe finished but no MSI exists at the expected path. Check light.exe output for the real output path or errors.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/cli/src/bundler/windows.rs:341 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of DioxusLabs/dioxus@24f6a829df (2026-08-23). Data as JSON: /api/errors/9265fa5ef2e1ba1a. Report an issue: GitHub.