# Packaging: portable vs installable Querya Desktop ships (and will ship) two download channels. See epic [#379](https://github.com/QueryaHub/Querya-Desktop/issues/379). | Channel | Typical artifact | Profile data | |---------|------------------|--------------| | **Portable** | `Querya-Desktop-{ver}-{os}.zip` (Flutter bundle) | OS app-support by default; optional sidecar — see below | | **Installable** | AppImage, Windows setup, deb/rpm/Flatpak (planned) | Normal OS locations | ## Portable profile (`QueryaData`) By default the zip is a **relocatable binary** only: settings DB, themes, and extensions still use OS paths (`getApplicationSupportDirectory`, `~/.querya/extensions`, …). To keep profile data next to the app (USB-style): 1. Set environment variable **`QUERYA_PORTABLE=1`** (also `true` / `yes` / `on`), **or** 2. Create a folder named **`QueryaData`** next to `querya_desktop` / `querya_desktop.exe` / the `.AppImage` file. Then local data is stored under that folder: | Kind | Path under `QueryaData/` | |------|--------------------------| | SQLite DB | `querya_desktop/querya.db` | | Themes | `themes/` | | Extensions | `extensions/` | | Sandbox / audit logs | `logs/` | On Linux AppImage, the install directory is the parent of `$APPIMAGE`. ### Secrets Connection passwords remain in the **OS keyring** (`flutter_secure_storage` / libsecret / Credential Manager / Keychain). Portable mode does **not** move secrets into `QueryaData` in v1. ## Bundle / application IDs | Platform | ID | |----------|----| | Linux (`APPLICATION_ID`) | `com.queryahub.querya_desktop` | | macOS (bundle id) | `com.queryahub.queryaDesktop` | | Windows (Company / Product) | `QueryaHub` / `Querya Desktop` | Legacy `com.example.*` support directories are migrated once into the new paths (see `AppDataRoot.migrateLegacySupportIfNeeded`). ## Related code - `lib/core/storage/app_data_root.dart` — portable detection, support-dir redirect, id migration - Updater packaging context: `lib/core/updater/installers/update_install_context.dart` - Release workflow: `.github/workflows/release.yml`