Skip to content

Support multiple installations of the same app coexisting on the desktop #3

@ctrueden

Description

@ctrueden

Users commonly have multiple copies of Fiji (or other SciJava apps) installed side-by-side (e.g. each with different update sites enabled). Currently all installations share a single desktop entry keyed only on the app name, so whichever runs syncDesktopIntegration last wins — stealing file-type and URI-scheme associations from the others and showing only one icon in the launcher.

Root cause

The .desktop filename (Linux) and registry ProgId (Windows) are derived solely from scijava.app.name, so every installation writes to the same location.

Proposed approach

Key the desktop artifact on the installation path rather than just the name.

Linux

Derive the .desktop filename from a slug of scijava.app.directory, e.g.:

~/.local/share/applications/fiji-home-curtis-fiji-stable.desktop
~/.local/share/applications/fiji-home-curtis-fiji-nightly.desktop

Each installation gets its own icon in the launcher and its own MIME/scheme registrations. The system default handler (xdg-mime default) is a separate per-user preference and would let the user choose which installation opens a given file type.

Windows

Use a unique ProgId derived from the install path (e.g. Fiji.home.curtis.fiji-stable) so registry keys under HKCU\Software\Classes don't collide. All installations would appear in "Open With", giving the user an explicit choice.

Open questions

  • Should the slug use a hash of the path (short, opaque) or a sanitised path string (readable but potentially long)?
  • Should there be a scijava.app.id property that apps can set explicitly to override the auto-derived key?
  • How should uninstallation/cleanup work when an installation is removed?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions