-
-
Notifications
You must be signed in to change notification settings - Fork 60
Data Locations
This page is the definitive map of every folder, file, mutex, scheduled task, and registry key that Sucrose touches on disk. Sucrose keeps user data, settings, cache, and logs separate from the installed binaries: configuration lives in the Roaming profile under %AppData%\Sucrose\, while the program files (and the bundled private .NET runtime) live in the Local profile under %LocalAppData%\Sucrose\. There is no monolithic config file and no app-specific registry usage for settings — the registry writes are limited to Windows' own DirectX GPU-preference key (at runtime) and the per-user Uninstall entry written by the Sucrose.Bundle installer under HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\Sucrose (DisplayName, UninstallString, QuietUninstallString, DisplayVersion, InstallLocation, Publisher, NoModify, NoRepair, etc.) (see Windows-owned state).
- The two roots
- Roaming data tree (%AppData%\Sucrose)
- Local install tree (%LocalAppData%\Sucrose)
- Settings files
- Log files
- Important file names
- Process executable names
- Single-instance mutex names
- Windows-owned state (not in the JSON files)
- Quick lookup table
| Root | Path | Contents |
|---|---|---|
Roaming (Environment.SpecialFolder.ApplicationData) |
%AppData%\Sucrose\ |
Settings (Setting\), logs (Log\), cache (Cache\), wallpaper library (Library\), Showcase assets (Showcase\) |
Local (Environment.SpecialFolder.LocalApplicationData) |
%LocalAppData%\Sucrose\ |
Installed binaries, per-process subfolders, and the bundled private .NET runtime (Sucrose.Runtime) |
The app name segment Sucrose comes from the constant Sucrose.Memory.Manage.Readonly.General.AppName. Folder-name segments such as Setting, Log, and Cache come from Sucrose.Memory.Manage.Readonly.Folder.
%AppData%\Sucrose\
├── Setting\ <Category>.json (all settings)
├── Log\ <Process>-yy.MM.dd.log
├── Library\ default installed-wallpaper library (overridable via Library.Location)
├── Showcase\ showcase / preview assets
└── Cache\
├── Bundle\ update download cache (Sucrose.Update)
├── Store\ in-app Store cache:
│ ├── Store.json store catalog snapshot
│ ├── Pattern.json store pattern data
│ ├── <Category>\<wallpaper> downloaded Store themes
│ └── Temporary\ Store download temp; also the GIF download cache
├── Report\ crash reports: <Id>.json (Watchdog / Reportdog)
├── Properties\ per-wallpaper saved property values
├── Gif\ Vexana GIF engine cache
├── MpvPlayer\ MpvPlayer engine profile/data + SucroseProperties.json
├── CefSharp\ CefSharp engine cache + SucroseProperties.json
└── WebView2\ WebView2 user-data folder + SucroseProperties.json
Key roaming locations:
| Folder | Purpose |
|---|---|
%AppData%\Sucrose\Setting\ |
Every settings JSON file (one per category). See Settings-Persistence. |
%AppData%\Sucrose\Log\ |
Per-process date-stamped log files. See Logs-Diagnostics. |
%AppData%\Sucrose\Library\ |
The default wallpaper library. The active location is whatever Library.Location points to; it can be relocated (see Managing-Library). |
%AppData%\Sucrose\Showcase\ |
Showcase / preview assets bundled with the app. |
%AppData%\Sucrose\Cache\ |
All transient data. See Cache-Management. |
📷 Screenshot needed: Windows File Explorer at
%AppData%\Sucrosewith theSetting,Log,Cache,Library, andShowcasefolders expanded one level.
The installer (the Sucrose.Bundle package) extracts per-user into %LocalAppData%\Sucrose — no administrator rights are required. From Sucrose.Undo.Manage.Internal:
| Item | Path | Notes |
|---|---|---|
| Install root | %LocalAppData%\Sucrose |
Each executable lives at <Name>\<Name>.exe. |
| Private runtime | %LocalAppData%\Sucrose\Sucrose.Runtime |
The bundled, trimmed .NET 10 runtime, so no system-wide .NET install is needed. See System-Requirements. |
| Data dir (removed on uninstall) | %AppData%\Sucrose |
The Roaming tree above. |
| Uninstall registry root (read) | Software\Microsoft\Windows\CurrentVersion\Uninstall |
The uninstall entry is read from the per-user (HKCU) Uninstall key. See Uninstalling-Sucrose. |
| Start Menu shortcut | …\Programs\Sucrose Wallpaper Engine.lnk |
|
| Desktop shortcut | Sucrose Wallpaper Engine.lnk |
|
| Self-delete batch | %TEMP%\del_<guid>.bat |
Dropped by Sucrose.Undo during uninstall to delete the running uninstaller. See Undo-Internals. |
All settings JSON files live under %AppData%\Sucrose\Setting\. Each is a small JSON object of the shape { "Properties": { ... } }. One file maps to one topical category, registered in Sucrose.Manager.Manage.Internal:
| File | Backing accessor class | Topic |
|---|---|---|
General.json |
Manage.General |
Language, startup, telemetry/exception consent, app visibility/exit |
Engine.json |
Manage.Engine |
Volume, screen layout, input, hardware acceleration, per-type engine selection |
Portal.json |
Manage.Portal |
UI layout, opacity, pagination, Store duration, adult filter |
Library.json |
Manage.Library |
Library location, selected wallpaper, delete behavior |
System.json |
Manage.System |
Cached hardware enumeration (network/graphic interfaces) |
Update.json |
Manage.Update |
Auto-update state, download limit |
Cycling.json |
Manage.Cycling |
Slideshow active state, transition time, exclusion list |
Backgroundog.json |
Manage.Backgroundog |
Performance rules, thresholds, communication type |
Hook.json |
Manage.Hook |
Discord Rich Presence connection/refresh |
Donate.json |
Manage.Donate |
Donate page state |
Aurora.json |
Manage.Aurora |
Application engine process name |
Warehouse.json |
Manage.Warehouse |
First-run / runtime state (Showcase list, tray hint) |
Objectionable.json |
Manage.Objectionable |
PersonalAccessToken (sensitive — stored in plaintext) |
Kernel.json |
(no wrapper; key Information) |
Kernel information |
For the full key/default/range tables see Settings-All-Keys; for how the files are read and written see Settings-Persistence.
Logs live under %AppData%\Sucrose\Log\, one file per process per day, named <Process>-yy.MM.dd.log. The process names are: Undo, Portal, Update, Launcher, Property, Watchdog, Commandog, Reportdog, Backgroundog, AuroraLive, NebulaLive, VexanaLive, XavierLive, WebViewLive, CefSharpLive, MpvPlayerLive. The CefSharp engine additionally writes a native log named CefSharpNative-<date>-<guid>.log. See Logs-Diagnostics for the line format and how to bundle logs for a bug report.
These canonical file names (from Sucrose.Memory.Manage.Readonly.Content) appear inside wallpaper packages and engine caches:
| File | Role |
|---|---|
SucroseInfo.json |
Wallpaper package manifest (required). See Create-Package-Format. |
SucroseProperties.json |
Customization control definitions / saved values. See Create-Customization-Controls. |
SucroseCompatible.json |
JS bridge hook/template definitions. See Create-JS-Bridge. |
SucroseStore.json |
Store metadata sidecar. |
Store.json |
Store catalog snapshot (in Cache\Store\). |
Pattern.json |
Store pattern data (in Cache\Store\). |
MpvPlayer.config / uMpvPlayer.config
|
Default and user-override mpv configuration. See Engine-MpvPlayer. |
GifContent.html / ImageContent.html / VideoContent.html / YouTubeContent.html
|
Engine HTML wrappers used by the browser engines. |
From Sucrose.Memory.Manage.Readonly.App:
Sucrose.Launcher.exe, Sucrose.Portal.exe, Sucrose.Update.exe, Sucrose.Property.exe, Sucrose.Watchdog.exe, Sucrose.Commandog.exe, Sucrose.Reportdog.exe, Sucrose.Backgroundog.exe, Sucrose.Undo.exe, and the engines Sucrose.Live.Aurora.exe, Sucrose.Live.Nebula.exe, Sucrose.Live.Vexana.exe, Sucrose.Live.Xavier.exe, Sucrose.Live.WebView.exe, Sucrose.Live.CefSharp.exe, Sucrose.Live.MpvPlayer.exe.
See Architecture-Overview for what each process does.
Sucrose gates single-instance processes with named mutexes (from Sucrose.Memory.Manage.Readonly.Mutex):
{Sucrose-Wallpaper-Engine-Live}, {Sucrose-Wallpaper-Engine-Portal}, {Sucrose-Wallpaper-Engine-Update}, {Sucrose-Wallpaper-Engine-Property}, {Sucrose-Wallpaper-Engine-Launcher}, {Sucrose-Wallpaper-Engine-Reportdog}, {Sucrose-Wallpaper-Engine-Backgroundog}.
See Single-Instance-Mutexes for how these gate launches.
Some state is stored in Windows rather than in Sucrose's own files:
| State | Where | Notes |
|---|---|---|
| Autostart-on-login |
Windows Task Scheduler task Autorun for Sucrose (description "Sucrose Wallpaper Engine") |
Created/enabled/disabled/deleted by Sucrose.Commandog.Helper.Scheduler. Driven by the RunStartup setting. To remove a stuck autostart, delete this scheduled task. Not a registry Run entry. See Troubleshooting-Settings-Startup-GPU. |
| Per-app GPU preference | HKEY_CURRENT_USER\Software\Microsoft\DirectX\UserGpuPreferences |
Windows' own per-app GPU setting (semicolon-delimited GpuPreference=<n>; per app path), written by Sucrose.Shared.Space.Extension.GraphicPreference and driven by the GraphicPreference value. |
| GIF download cache location | %AppData%\Sucrose\Cache\Store\Temporary |
The Portal repoints Sucrose.XamlAnimatedGif's loader here (its library default is Path.GetTempPath()). Cache files are SHA1 hashes (uppercase hex) of the source URL's AbsoluteUri. The Portal repoints both the cache location and its expiry: the active expiry is StoreDuration hours (default 3, clamped 1-24), not 30 days — the 30-day value is only the loader's un-overridden library default. See Cache-Management. |
| I want… | Go to |
|---|---|
| My settings | %AppData%\Sucrose\Setting\ |
| My logs | %AppData%\Sucrose\Log\ |
| My downloaded Store wallpapers | %AppData%\Sucrose\Cache\Store\ |
| Crash reports | %AppData%\Sucrose\Cache\Report\ |
| The installed program files | %LocalAppData%\Sucrose\ |
| The bundled .NET runtime | %LocalAppData%\Sucrose\Sucrose.Runtime\ |
| The autostart task | Task Scheduler → Autorun for Sucrose
|
Getting Started
- Installation
- System Requirements
- Quick Start
- Portal Interface Tour
- Updating Sucrose
- Uninstalling Sucrose
Wallpaper Types
Using Sucrose
- Managing Library
- Using Store
- Customizing Wallpaper
- Multi-Monitor
- Wallpaper Cycling
- Choosing Engines
- Performance Rules
- Theme, Tray & Startup
- Discord Rich Presence
Settings Reference
- Settings Overview
- Settings: General
- Settings: Personal
- Settings: Performance
- Settings: Wallpaper
- Settings: System
- Settings: Other
- Settings: All Keys
Creating Wallpapers
- Create Overview
- Create: Step By Step
- Create: Package Format
- Create: Customization Controls
- Create: JS Bridge
- Create: Audio API
- Create: System API
- Create: Property Listener & Filters
- Create: Web Architecture
- Create: Compatibility
- Create: Example Wallpapers
- Create: Sharing & Publishing
Engine Reference
- Engines Overview
- Engine: MpvPlayer
- Engine: VlcPlayer
- Engine: WebView
- Engine: CefSharp
- Engine: Nebula
- Engine: Vexana
- Engine: Xavier
- Engine: Aurora
- Engine Comparison
Automation & Command Line
Architecture & Internals
- Architecture Overview
- Lifecycle
- Commandog Dispatcher
- Single-Instance Mutexes
- IPC
- Backgroundog Service
- Crash Reporting
- Update Internals
- Property Service
- Undo Internals
Data, Files & Diagnostics
Building & Contributing
- Building From Source
- Repository Layout
- Shared Item Projects
- Code Conventions
- Preprocessor Symbols
- Publish Pipeline
- Bundle Installer Internals
- Extending Sucrose
- Contributing
- Translating with Localizer
- Localization Coverage
- Security Policy
- Privacy & Telemetry
Help & Support