Flow-Launcher/Flow.Launcher · error · EngineNotAvailableException

Failed to load Everything SDK

Error message

Failed to load Everything SDK

What it means

Thrown as EngineNotAvailableException(message=flowlauncher_plugin_everything_sdk_issue()) from the catch (DllNotFoundException) inside ThrowIfEverythingNotAvailableAsync. The bundled Everything interop DLL (Everything x86/x64) could not be loaded by the .NET runtime, so the API surface is unusable. The hint 'Please check whether your system is x86 or x64' reflects that the wrong bitness of the native DLL is the most common cause.

Source

Thrown at Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/EverythingSearchManager.cs:37

        {
            Settings = settings;
        }

        private async ValueTask ThrowIfEverythingNotAvailableAsync(CancellationToken token = default)
        {
            try
            {
                if (!await EverythingApi.IsEverythingRunningAsync(token))
                    throw new EngineNotAvailableException(
                        Enum.GetName(Settings.IndexSearchEngineOption.Everything)!,
                        Localize.flowlauncher_plugin_everything_click_to_launch_or_install(),
                        Localize.flowlauncher_plugin_everything_is_not_running(),
                        Constants.EverythingErrorImagePath,
                        ClickToInstallEverythingAsync);
            }
            catch (DllNotFoundException)
            {
                throw new EngineNotAvailableException(
                    Enum.GetName(Settings.IndexSearchEngineOption.Everything)!,
                    "Please check whether your system is x86 or x64",
                    Constants.GeneralSearchErrorImagePath,
                    Localize.flowlauncher_plugin_everything_sdk_issue());
            }
        }

        private async ValueTask<bool> ClickToInstallEverythingAsync(ActionContext _)
        {
            try
            {
                var installedPath = await EverythingDownloadHelper.PromptDownloadIfNotInstallAsync(Settings.EverythingInstalledPath, Main.Context.API);

                if (installedPath == null)
                {
                    Main.Context.API.ShowMsgError(Localize.flowlauncher_plugin_everything_not_found());
                    Main.Context.API.LogError(ClassName, "Unable to find Everything.exe");

View on GitHub (pinned to 7fc63b07bb)

Solutions

  1. Reinstall the Explorer plugin from a clean source so the matching-bitness Everything*.dll is present.
  2. Match Flow Launcher's process architecture (x86 vs x64) to the bundled Everything native DLL.
  3. On ARM64, install the x64 Everything build and run Flow Launcher under x64 emulation, or use an ARM64 Everything build if available.
  4. Unblock the DLL (file Properties > Unblock) and add an antivirus exclusion if it keeps being quarantined.

Example fix

// before - one path for all DllNotFoundException causes
catch (DllNotFoundException)
{
    throw new EngineNotAvailableException(...);
}

// after - record the failed DLL name for diagnosis
const string dll = "Everything.dll";
try { return File.Exists(Path.Combine(pluginDir, dll)); }
catch (DllNotFoundException ex) when (ex.Message.Contains(dll))
{
    Main.Context.API.LogError(ClassName, $"Missing/blocked {dll} in {pluginDir}");
    throw new EngineNotAvailableException("Everything", "reinstall the plugin", ex.Message, ...);
}
Defensive patterns

Strategy: validation

Validate before calling

var arch = RuntimeInformation.ProcessArchitecture;
var expected = arch == Architecture.X64 ? "Everything64.dll" : "Everything.dll";
if (!File.Exists(Path.Combine(pluginDir, expected)))
    throw new FileNotFoundException($"Missing {expected} for {arch}.");

Type guard

static bool NativeDllPresent() => File.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Everything.dll"));

Try / catch

try { await manager.SearchAsync(query, token); }
catch (EngineNotAvailableException ex) when (ex.InnerException is DllNotFoundException) { PromptReinstallPlugin(); }

Prevention

When it happens

Trigger: The Everything native DLL is missing from the plugin folder, the wrong architecture (x86 vs x64 vs ARM64) is shipped, the DLL is blocked by Windows Mark-of-the-Web or by antivirus, or a dependent VC++ runtime is not installed. Any call into EverythingApi triggers the DllNotFoundException on first P/Invoke.

Common situations: Plugin was copied between machines without the native Everything*.dll; Flow Launcher was installed as x86 but the plugin shipped an x64-only native DLL (or the reverse); the DLL was quarantined by antivirus after download; the user is on ARM64 Windows and only x64/x86 binaries shipped.

Related errors


AI-assisted analysis of Flow-Launcher/Flow.Launcher@7fc63b07bb (2026-08-13). Data as JSON: /api/errors/ca73a60f5e2b6af1. Report an issue: GitHub.