Skip to content

Feature: Custom Installation Directory & Post-Install Directory Migration (Velopack --installto & In-App Migration) #428

Description

@undead2146

Problem Statement & Context

GenHub currently installs by default to the user profile directory (%LOCALAPPDATA%\GenHub on Windows and ~/.local/share/GenHub on Linux) via Velopack's one-click setup.

Many players have limited storage capacity on their primary system partition (C: drive) and prefer to install games, mod organizers, and content launchers on secondary high-capacity drives (e.g. D:\Games\GenHub\).

Currently:

  1. First-Install Limitation: While Velopack supports the --installto <path> CLI parameter (e.g. GenHub-Setup.exe --installto "D:\Games\GenHub"), this is neither documented for end-users nor surfaced in standard installation instructions.
  2. Post-Install Migration: Once GenHub is installed to the default C: drive, there is no built-in option or UI workflow in GenHub to migrate the application and its installation directory to a different drive/folder without manual uninstall/reinstall and reconfiguring content/CAS locations.

User Stories & Use Cases

  • UC-1 (First Install Custom Location): As a user with a small C: drive SSD, I want to install GenHub to a custom drive/directory (via installer parameter or guided setup) so that the application binaries and updates do not consume space on my primary OS partition.
  • UC-2 (Post-Install Migration): As an existing GenHub user, I want a settings option to safely migrate my current GenHub installation to a different drive/folder without losing my game profiles, CAS pool, settings, or desktop shortcuts.
  • UC-3 (Update Compatibility): When GenHub is installed in or migrated to a custom directory, subsequent automatic updates via VelopackUpdateManager must continue updating within the custom directory instead of falling back to %LOCALAPPDATA%\GenHub\.
  • UC-4 (Shortcut & URI Scheme Re-registration): After migrating the installation directory, all Start Menu, Desktop shortcuts, and genhub:// protocol handlers should be updated to point to the new executable path.

Proposed Technical Scope

1. Documentation & Installer Support

  • Document the --installto <path> command-line argument in docs/velopack-integration.md and release download notes.
  • Verify Velopack installer behavior when custom target paths are provided on Windows and Linux.

2. In-App Migration Workflow (Settings > Storage / General)

  • Add a "Migrate Installation Location" action in Settings.
  • Workflow:
    1. User selects target folder via directory picker dialog.
    2. Perform pre-flight checks (disk space validation, write permissions, ensuring no game instances or locking processes are active).
    3. Invoke migration routine that stages files, moves application packages and binaries, and updates shortcut / URI scheme registrations.
    4. Relaunch GenHub from the new directory.

3. Integrated CAS Pool & Workspace Storage Prompt

  • When relocating the application directory, offer the user an option to also relocate the local CAS pool and workspace directory to the new target drive to free up the C: drive.

Acceptance Criteria

  • Document --installto argument in user and developer documentation (docs/velopack-integration.md).
  • Verify VelopackUpdateManager update cycle functions seamlessly in custom install directories.
  • Provide an in-app migration tool/flow to move GenHub installation directory to another drive.
  • Ensure shortcuts and genhub:// URI scheme handler are updated upon migration.
  • Test cross-drive migration and rollback on failure without data loss.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ArchitectureHigher level designEnhancementNew feature or requestGUIFor graphical user interfaceInfrastructureFor cross cutting concernsWIPWindowsRelated to Windows only

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions