# Installation on Windows Install the desktop app to upload media from local folders or synchronize folders and albums with Immich. Each folder has its own sync mode and file filters. ## Prerequisites - Windows 10/11 or Windows Server - .NET SDK 10.0+ (only for source-based builds / development) - Immich server URL and API key ## Recommended: MSI Installer Download the matching `.msi` from [GitHub Releases](https://github.com/VoltKraft/immich-folder-watch/releases): use `immich-folder-watch--win-x64.msi` for Intel/AMD Windows and `immich-folder-watch--win-arm64.msi` for Windows on Arm. Run it with administrative rights. The installer is per-machine (binaries only); each Windows user keeps their own configuration and logs under `%LOCALAPPDATA%`. Alternatively, `winget install VoltKraft.ImmichFolderWatch` automatically selects the installer matching the Windows architecture once a multi-architecture release is published. Releases through `v2.7.0` remain x64-only and are not backfilled. After install: 1. Open the `Immich Folder Watch` desktop shortcut (or launch it from the Start menu). 2. Open **Connection**, enter your Immich API URL and key, and select **Verify Immich Access**. 3. Open **Folders** and add one or more sources. Under **General**, choose whether to upload only new files, upload existing and new files, or synchronize in both directions. Review the album and **File filters**. Bidirectional sync also propagates deletions; read the [desktop interface guide](user-interface.md#general) before selecting it. 4. Adjust global upload/download order, batching, and retries under **Settings → Transfer**, or logging under **Settings → Logging**, if needed. 5. Click **Save and Apply** to validate and save the configuration and start synchronization in the selected modes. A tray icon remains available in the notification area. ### Installed Layout - `%ProgramFiles%\Immich Folder Watch\bin\` — app binaries (per-machine) - `%LOCALAPPDATA%\Immich Folder Watch\config.yaml` — per-user active config - `%LOCALAPPDATA%\Immich Folder Watch\logs\` — per-user app logs - `%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\Immich Folder Watch.lnk` — autostart shortcut (default on; togglable in the GUI) ### Autostart and Tray Behavior - Closing the main window hides it to the tray; synchronization continues in the background. - The tray icon's tooltip shows last sync time, queue length, and server connection. - The tray context menu provides **Open GUI**, **Restart**, and **Quit**. - Disable autostart via the **Start at login** checkbox under **Settings → General**. ### Uninstall `msiexec /x .msi` (or uninstall from Settings → Apps). The installer removes binaries and the desktop shortcut but **preserves** `%LOCALAPPDATA%\Immich Folder Watch\` so your config and logs stay intact. The autostart shortcut stays behind as a dead link; delete it manually from `shell:startup` if desired. ## Upgrade From Older Service-Based Installs Versions ≤ 1.6.x installed a Windows service (`ImmichFolderWatch`) with a shared config under `C:\ProgramData\Immich Folder Watch\`. When you upgrade via the new MSI: 1. The legacy service is stopped and deleted. 2. The existing `C:\ProgramData\Immich Folder Watch\config.yaml` is copied into the **installing user's** `%LOCALAPPDATA%\Immich Folder Watch\config.yaml` (only if that user does not already have one). 3. The `C:\ProgramData\Immich Folder Watch\` folder is removed. 4. Autostart is enabled for the installing user. Other Windows users on the same machine need to launch the app once to seed their own per-user config — they do not inherit the migrated settings. ## Multi-User Setup Every Windows user can run the app with their own watch folders and Immich credentials. The per-user config isolation means: - Each user's API key is stored only under their own profile. - Logs are not shared across users. - Running the app simultaneously under two logged-in accounts is supported (each instance has its own single-instance mutex scoped to the user SID). ## Building From Source ```powershell dotnet restore dotnet build ImmichFolderWatch.sln -c Release dotnet run --project src/ImmichFolderWatch.App ``` ## Building the MSI Locally ```powershell .\packaging\windows\build-msi.ps1 -Runtime win-x64 .\packaging\windows\build-msi.ps1 -Runtime win-arm64 ``` The architecture-specific MSIs are produced under `artifacts\windows\msi\`. On the first run, `dotnet` restores the WiX SDK from NuGet.