Skip to content

Repository files navigation

Cloud Storage icon

Cloud Storage for Playnite

Turn folders in Google Drive and OneDrive into installable Playnite game libraries.

GitHub release Apache-2.0 license Playnite API 6.16

Cloud Storage is a Playnite library plugin for discovering, installing, and uninstalling games kept in cloud storage. Connect an account, choose one concrete folder, and its supported game packages appear in Playnite as a normal library source.

The plugin never writes to or deletes cloud files. Local games, downloads, staging data, and manifests stay together below one managed storage directory.

Features

  • Google Drive and Microsoft OneDrive with browser-based OAuth login.
  • Read-only provider access with Windows-user-bound token encryption.
  • Recursive discovery below a folder deliberately selected through the provider picker.
  • ZIP, 7z, and RAR game archives.
  • Standalone installers and installer bundles inside archives.
  • Common cartridge and arcade ROM formats.
  • Recursive ScummVM and MS-DOS game directories.
  • Download and extraction progress with cancellation and duplicate-install protection.
  • Safe archive extraction with traversal, link, encryption, and size checks.
  • Installer-aware executable selection and editable Playnite play actions.
  • Playnite emulator/profile validation before downloading ROMs.
  • Managed uninstall that preserves files left behind by native uninstallers.
  • Source reconciliation when a cloud package is moved or removed.

Install

Once the add-on is accepted into Playnite's add-on database, install Cloud Storage from Main menu > Add-ons > Browse > Libraries.

For a manual installation, download the latest .pext from Releases, open it, and let Playnite restart.

Configure

  1. Open Main menu > Add-ons > Extension settings > Libraries > Cloud Storage.
  2. Choose the managed root used for local games and temporary staging files.
  3. Click Connect Google Drive or Connect OneDrive and complete the provider's sign-in and consent screen.
  4. Choose a concrete game-package folder. Drive roots are intentionally not selectable, which prevents accidental whole-drive imports.
  5. Save settings and update the Cloud Storage library source.

Each provider is optional and can point to a different folder. Disconnecting a provider removes its local authorization; it does not modify the cloud account.

Package behavior

Package Import and installation behavior
.zip, .7z, .rar Downloaded to staging, validated, extracted transactionally, then removed from staging after success.
Installer archive Extracted, then the contained installer runs interactively. Files left by its uninstaller are preserved.
Standalone installer bundle The setup executable and adjacent payload files are downloaded together before setup starts.
ROM Copied byte-for-byte without extraction and attached to a compatible Playnite emulator profile.
ScummVM or MS-DOS directory Downloaded recursively into one managed game directory and attached to a compatible Playnite emulator profile through a local launch marker.

Cloud packages are authoritative only after a successful provider scan. A missing uninstalled package is removed from the library; an installed game is retained and marked unavailable so its local installation is not destroyed.

Security and privacy

  • OAuth uses the system browser, PKCE, random state, and an exact loopback callback.
  • Google Drive requests restricted, read-only drive.readonly access because Google's per-file scope cannot enumerate the existing descendants of a selected folder. Cloud Storage's Playnite-native browser chooses the folder that the extension scans; other Drive locations are not scanned. OneDrive requests delegated Files.Read and User.Read.
  • Access and refresh tokens are encrypted with Windows DPAPI for the current Windows account and stored in Playnite's extension-data directory.
  • Cloud Storage has no telemetry, analytics, advertising, or developer-operated backend.
  • No user data or OAuth tokens are sent to the plugin author.
  • Google Workspace data is handled under Google's API Services User Data Policy, including its Limited Use requirements.

See the full privacy policy.

Current limitations

  • OneDrive currently browses the account's My files drive; shared items and SharePoint document libraries need explicit drive-identity support.
  • Password-protected and multi-volume archives are rejected.
  • Multi-file disc sets, BIOS/firmware, and shared emulator dependencies need separate content strategies.
  • Arcade filenames that use MAME machine IDs need a dedicated MAME DAT metadata provider; that does not belong in this storage plugin.

Development

Cloud integrations implement one complete ICloudSourceProvider facade for authentication, folder selection, authoritative scanning, and package streams. Provider records are translated into neutral CloudFileEntry objects, then one shared discovery and installation pipeline handles the result.

Requirements:

  • Windows and .NET Framework 4.6.2 tooling
  • Playnite SDK 6.16.0
  • A Playnite 10 development build or installation

Google's desktop OAuth token endpoint requires the client credential issued with the registered client. Keep it out of source control by creating an ignored CloudSource.BuildSecrets.props file at the repository root:

<Project>
  <PropertyGroup>
    <CloudSourceGoogleClientSecret>your-desktop-client-secret</CloudSourceGoogleClientSecret>
    <CloudSourceGooglePickerApiKey>your-picker-api-key</CloudSourceGooglePickerApiKey>
  </PropertyGroup>
</Project>
dotnet build .\src\CloudSource.Playnite\CloudSource.Playnite.csproj
dotnet run --project .\tests\CloudSource.Playnite.Tests\CloudSource.Playnite.Tests.csproj

Architecture decisions are documented in docs/architecture. Bug reports and focused contributions are welcome through GitHub Issues and pull requests.

License

Licensed under the Apache License 2.0. Attributions for reused designs and development dependencies are in NOTICE.

About

A Playnite library plugin for discovering and installing games from Google Drive and OneDrive.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages