Skip to content

Access denied (os error 5) during PostgreSQL setup on Windows after successful download & extract #210

@ArthurVasseur

Description

@ArthurVasseur

On Windows, the embedded PostgreSQL setup fails with Access is denied. (os error 5) right after the archive is downloaded and extracted successfully.

I am runing inside a Tauri App:

let app = tauri::Builder::default()
        .plugin(tauri_plugin_dialog::init())
        .setup(|app| {
            if cfg!(debug_assertions) {
                app.handle().plugin(
                    tauri_plugin_log::Builder::default()
                        .level(log::LevelFilter::Debug)
                        .build(),
                )?;
            }
            app.manage(Mutex::new(EmbeddedDbState { pg: None }));
            let handle = app.handle().clone();
            tauri::async_runtime::spawn(async move {
                let mut settings = postgresql_embedded::Settings::default();
                settings.port = 2025;
                settings.installation_dir = std::env::current_dir()
                    .unwrap()
                    .parent()
                    .unwrap()
                    .join("embedded_db");
                let mut pg = PostgreSQL::new(settings);
                
                match pg.setup().await {
                    Ok(_) => {
                        match pg.start().await {
                            Ok(_) => {
                                let state = handle.state::<Mutex<EmbeddedDbState>>();
                                let mut guard = state.lock().unwrap();
                                guard.pg = Some(pg);
                            }
                            Err(e) => {
                                log::error!("Failed to start PostgreSQL: {}", e);
                            }
                        }
                    }
                    Err(e) => {
                        log::error!("Failed to setup PostgreSQL: {}", e);
                    }
                }
            });
            Ok(())
        })
        .invoke_handler(tauri::generate_handler![
            launch_application,
        ])
        .build(tauri::generate_context!())
        .expect("error while building tauri application");

Logs:

[2025-08-14][08:02:35][tracing::span][INFO] setup;
[2025-08-14][08:02:35][tracing::span][INFO] install;
[2025-08-14][08:02:35][postgresql_embedded::postgresql][DEBUG] Starting installation process for version *
[2025-08-14][08:02:35][postgresql_archive::archive][DEBUG] get_version; url="https://github.com/theseus-rs/postgresql-binaries" version_req=VersionReq { comparators: [] }
[2025-08-14][08:02:35][postgresql_archive::repository::github::repository][DEBUG] get_version; self=GitHub { url: "https://github.com/theseus-rs/postgresql-binaries", releases_url: "https://api.github.com/repos/theseus-rs/postgresql-binaries/releases" } version_req=VersionReq { comparators: [] }
[2025-08-14][08:02:35][postgresql_archive::repository::github::repository][DEBUG] get_release; self=GitHub { url: "https://github.com/theseus-rs/postgresql-binaries", releases_url: "https://api.github.com/repos/theseus-rs/postgresql-binaries/releases" } version_req=VersionReq { comparators: [] }
[2025-08-14][08:02:35][postgresql_archive::repository::github::repository][DEBUG] Attempting to locate release for version requirement *
[2025-08-14][08:02:35][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.request.method=GET url.scheme=https server.address=api.github.com server.port=443 user_agent.original=postgresql_archive/0.19.0 otel.kind="client" otel.name=GET
[2025-08-14][08:02:35][reqwest::connect][DEBUG] starting new connection: https://api.github.com/
[2025-08-14][08:02:35][hyper_util::client::legacy::connect::http][DEBUG] connecting to 140.82.121.6:443
[2025-08-14][08:02:35][hyper_util::client::legacy::connect::http][DEBUG] connected to 140.82.121.6:443
[2025-08-14][08:02:39][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.response.status_code=200
[2025-08-14][08:02:39][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", api.github.com)
[2025-08-14][08:02:39][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.request.method=GET url.scheme=https server.address=api.github.com server.port=443 user_agent.original=postgresql_archive/0.19.0 otel.kind="client" otel.name=GET
[2025-08-14][08:02:39][hyper_util::client::legacy::pool][DEBUG] reuse idle connection for ("https", api.github.com)
[2025-08-14][08:02:41][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.response.status_code=200
[2025-08-14][08:02:41][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", api.github.com)
[2025-08-14][08:02:42][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.request.method=GET url.scheme=https server.address=api.github.com server.port=443 user_agent.original=postgresql_archive/0.19.0 otel.kind="client" otel.name=GET
[2025-08-14][08:02:42][hyper_util::client::legacy::pool][DEBUG] reuse idle connection for ("https", api.github.com)
[2025-08-14][08:02:44][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.response.status_code=200
[2025-08-14][08:02:44][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", api.github.com)
[2025-08-14][08:02:44][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.request.method=GET url.scheme=https server.address=api.github.com server.port=443 user_agent.original=postgresql_archive/0.19.0 otel.kind="client" otel.name=GET
[2025-08-14][08:02:44][hyper_util::client::legacy::pool][DEBUG] reuse idle connection for ("https", api.github.com)
[2025-08-14][08:02:44][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", api.github.com)
[2025-08-14][08:02:44][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.response.status_code=200
[2025-08-14][08:02:44][postgresql_archive::repository::github::repository][DEBUG] Version 17.5.0 found for version requirement *
[2025-08-14][08:02:44][postgresql_archive::archive][INFO] get_archive; url="https://github.com/theseus-rs/postgresql-binaries" version_req=VersionReq { comparators: [Comparator { op: Exact, major: 17, minor: Some(5), patch: Some(0), pre: Prerelease("") }] }
[2025-08-14][08:02:44][postgresql_archive::repository::github::repository][INFO] get_archive; self=GitHub { url: "https://github.com/theseus-rs/postgresql-binaries", releases_url: "https://api.github.com/repos/theseus-rs/postgresql-binaries/releases" } version_req=VersionReq { comparators: [Comparator { op: Exact, major: 17, minor: Some(5), patch: Some(0), pre: Prerelease("") }] }
[2025-08-14][08:02:44][postgresql_archive::repository::github::repository][DEBUG] get_release; self=GitHub { url: "https://github.com/theseus-rs/postgresql-binaries", releases_url: "https://api.github.com/repos/theseus-rs/postgresql-binaries/releases" } version_req=VersionReq { comparators: [Comparator { op: Exact, major: 17, minor: Some(5), patch: Some(0), pre: Prerelease("") }] }
[2025-08-14][08:02:44][postgresql_archive::repository::github::repository][DEBUG] Attempting to locate release for version requirement =17.5.0
[2025-08-14][08:02:44][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.request.method=GET url.scheme=https server.address=api.github.com server.port=443 user_agent.original=postgresql_archive/0.19.0 otel.kind="client" otel.name=GET
[2025-08-14][08:02:44][reqwest::connect][DEBUG] starting new connection: https://api.github.com/
[2025-08-14][08:02:44][hyper_util::client::legacy::connect::http][DEBUG] connecting to 140.82.121.6:443
[2025-08-14][08:02:44][hyper_util::client::legacy::connect::http][DEBUG] connected to 140.82.121.6:443
[2025-08-14][08:02:44][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.response.status_code=200
[2025-08-14][08:02:44][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", api.github.com)
[2025-08-14][08:02:44][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.request.method=GET url.scheme=https server.address=api.github.com server.port=443 user_agent.original=postgresql_archive/0.19.0 otel.kind="client" otel.name=GET
[2025-08-14][08:02:44][hyper_util::client::legacy::pool][DEBUG] reuse idle connection for ("https", api.github.com)
[2025-08-14][08:02:44][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.response.status_code=200
[2025-08-14][08:02:45][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", api.github.com)
[2025-08-14][08:02:45][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.request.method=GET url.scheme=https server.address=api.github.com server.port=443 user_agent.original=postgresql_archive/0.19.0 otel.kind="client" otel.name=GET
[2025-08-14][08:02:45][hyper_util::client::legacy::pool][DEBUG] reuse idle connection for ("https", api.github.com)
[2025-08-14][08:02:45][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.response.status_code=200
[2025-08-14][08:02:45][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", api.github.com)
[2025-08-14][08:02:45][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.request.method=GET url.scheme=https server.address=api.github.com server.port=443 user_agent.original=postgresql_archive/0.19.0 otel.kind="client" otel.name=GET
[2025-08-14][08:02:45][hyper_util::client::legacy::pool][DEBUG] reuse idle connection for ("https", api.github.com)
[2025-08-14][08:02:45][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", api.github.com)
[2025-08-14][08:02:45][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.response.status_code=200
[2025-08-14][08:02:45][postgresql_archive::repository::github::repository][DEBUG] Version 17.5.0 found for version requirement =17.5.0
[2025-08-14][08:02:45][postgresql_archive::repository::github::repository][DEBUG] get_asset; self=GitHub { url: "https://github.com/theseus-rs/postgresql-binaries", releases_url: "https://api.github.com/repos/theseus-rs/postgresql-binaries/releases" }
[2025-08-14][08:02:45][postgresql_archive::repository::github::repository][DEBUG] Downloading archive https://github.com/theseus-rs/postgresql-binaries/releases/download/17.5.0/postgresql-17.5.0-x86_64-pc-windows-msvc.tar.gz
[2025-08-14][08:02:45][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.request.method=GET url.scheme=https server.address=github.com server.port=443 user_agent.original=postgresql_archive/0.19.0 otel.kind="client" otel.name=GET
[2025-08-14][08:02:45][reqwest::connect][DEBUG] starting new connection: https://github.com/
[2025-08-14][08:02:45][hyper_util::client::legacy::connect::http][DEBUG] connecting to 140.82.121.3:443
[2025-08-14][08:02:45][hyper_util::client::legacy::connect::http][DEBUG] connected to 140.82.121.3:443
[2025-08-14][08:02:45][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", github.com)
[2025-08-14][08:02:45][reqwest::connect][DEBUG] starting new connection: https://release-assets.githubusercontent.com/
[2025-08-14][08:02:45][hyper_util::client::legacy::connect::http][DEBUG] connecting to 185.199.110.133:443
[2025-08-14][08:02:45][hyper_util::client::legacy::connect::http][DEBUG] connected to 185.199.110.133:443
[2025-08-14][08:02:45][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.response.status_code=200
[2025-08-14][08:02:46][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", release-assets.githubusercontent.com)
[2025-08-14][08:02:46][postgresql_archive::repository::github::repository][DEBUG] Archive https://github.com/theseus-rs/postgresql-binaries/releases/download/17.5.0/postgresql-17.5.0-x86_64-pc-windows-msvc.tar.gz downloaded: 49642420
[2025-08-14][08:02:48][postgresql_archive::repository::github::repository][DEBUG] Downloading archive hash https://github.com/theseus-rs/postgresql-binaries/releases/download/17.5.0/postgresql-17.5.0-x86_64-pc-windows-msvc.tar.gz.sha256
[2025-08-14][08:02:48][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.request.method=GET url.scheme=https server.address=github.com server.port=443 user_agent.original=postgresql_archive/0.19.0 otel.kind="client" otel.name=GET
[2025-08-14][08:02:48][hyper_util::client::legacy::pool][DEBUG] reuse idle connection for ("https", github.com)
[2025-08-14][08:02:48][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", github.com)
[2025-08-14][08:02:48][hyper_util::client::legacy::pool][DEBUG] reuse idle connection for ("https", release-assets.githubusercontent.com)
[2025-08-14][08:02:48][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", release-assets.githubusercontent.com)
[2025-08-14][08:02:48][reqwest_tracing::reqwest_otel_span_builder][INFO] HTTP request; http.response.status_code=200
[2025-08-14][08:02:48][postgresql_archive::repository::github::repository][DEBUG] Archive hash https://github.com/theseus-rs/postgresql-binaries/releases/download/17.5.0/postgresql-17.5.0-x86_64-pc-windows-msvc.tar.gz.sha256 downloaded: 184
[2025-08-14][08:02:48][postgresql_archive::archive][INFO] extract; url="https://github.com/theseus-rs/postgresql-binaries" out_dir="C:\\Users\\Arthur\\Documents\\Git\\VEI\\Src\\vei-app\\embedded_db\\17.5.0"  
[2025-08-14][08:02:48][postgresql_archive::configuration::theseus::extractor][INFO] extract; extract_directories=ExtractDirectories { mappings: [(Regex(".*"), "C:\\Users\\Arthur\\Documents\\Git\\VEI\\Src\\vei-app\\embedded_db\\17.5.0")] }
[2025-08-14][08:02:48][postgresql_archive::configuration::theseus::extractor][DEBUG] acquire_lock; out_dir="C:\\Users\\Arthur\\Documents\\Git\\VEI\\Src\\vei-app\\embedded_db"
[2025-08-14][08:02:48][postgresql_archive::configuration::theseus::extractor][DEBUG] Attempting to acquire lock: C:\Users\Arthur\Documents\Git\VEI\Src\vei-app\embedded_db\postgresql-archive.lock
[2025-08-14][08:02:48][postgresql_archive::configuration::theseus::extractor][DEBUG] Lock acquired: C:\Users\Arthur\Documents\Git\VEI\Src\vei-app\embedded_db\postgresql-archive.lock
[2025-08-14][08:02:48][postgresql_archive::configuration::theseus::extractor][DEBUG] Extracting archive to C:\Users\Arthur\Documents\Git\VEI\Src\vei-app\embedded_db\.tmpSe9HKz
[2025-08-14][08:02:48][postgresql_archive::extractor::tar_gz_extractor][INFO] extract; extract_directories=ExtractDirectories { mappings: [(Regex(".*"), "C:\\Users\\Arthur\\Documents\\Git\\VEI\\Src\\vei-app\\embedded_db\\.tmpSe9HKz")] }
[2025-08-14][08:02:53][postgresql_archive::extractor::tar_gz_extractor][DEBUG] Extracted 2,901 files totalling 152574230
[2025-08-14][08:02:53][postgresql_archive::configuration::theseus::extractor][DEBUG] Renaming C:\Users\Arthur\Documents\Git\VEI\Src\vei-app\embedded_db\.tmpSe9HKz to C:\Users\Arthur\Documents\Git\VEI\Src\vei-app\embedded_db\17.5.0
[2025-08-14][08:02:53][vei_app_lib][ERROR] Failed to setup PostgreSQL: Accès refusé. (os error 5)

Here is the content of the embedded_db folder:

Image

Environment

Windows 11 24H2
postgresql_embedded: 0.19.0
PostgreSQL binary: 17.5.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions