Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DevToys 2.0] Added Extension manager #901

Merged
merged 4 commits into from
Aug 19, 2023
Merged

[DevToys 2.0] Added Extension manager #901

merged 4 commits into from
Aug 19, 2023

Conversation

veler
Copy link
Collaborator

@veler veler commented Aug 15, 2023

Pull request type

Please check the type of change your PR introduces:

  • Bugfix
  • New feature or enhancement
  • UI change (please include screenshot!)
  • Code style update (formatting, renaming)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • Documentation content changes
  • Internationalization and localization
  • Other (please describe):

What is the current behavior?

DevToys 2.0 lack of an extension manager.

What is the new behavior?

This PR adds an Extension Manager.

Some details:

  1. By default, DevToys will be shipped with "DevToys.Tools" extension. This extension will be stored in:
    • {DevToys Installation Folder}/Plugins on Windows
    • DevToys.app/Resources/Plugins on MacOS
  2. Extensions present in the folders mentioned above CANNOT be uninstalled from DevToy's Extension Manager UI, mostly because removing files from these folders may require Admin right (if DevToys is in Program Files for example).
  3. DevToys.Tools will be updated at the same time than DevToys app itself, so this limitation shouldn't be an issue.
  4. Other extension will be installed in:
    • %AppData%/Local/DevToys/Plugins on Windows
    • ~/Library/Caches/com.etiennebaudoux.devtoys/Plugins on MacOS
  5. When installing an extension, DevToys needs to restart to get the changes applied. It requires every instance of DevToys to be shutdown first.
  6. When uninstalling an extension, DevToys also needs to restart to get the changes applied. DevToys writes in a file the path to the extension to uninstall. On startup, and before loading MEF (and so before loading extensions), the app will read this file and remove the indicated paths it finds inside.
  7. Extensions are in the NUPKG format.

Other information

image

image

image

Quality check

Before creating this PR:

  • Did you follow the code style guideline as described in CONTRIBUTING.md
  • Did you build the app and test your changes?
  • Did you check for accessibility? On Windows, you can use Accessibility Insights for this.
  • Did you verify that the change work in Release build configuration
  • Did you verify that all unit tests pass
  • If necessary and if possible, did you verify your changes on:
    • Windows
    • macOS (DevToys 2.0)
    • Linux (DevToys 2.0)

@veler veler changed the title Dev/2.0 extensibility [DevToys 2.0] Added Extension manager Aug 15, 2023
@veler veler merged commit 67a0215 into dev/2.0 Aug 19, 2023
@veler veler deleted the dev/2.0-extensibility branch August 19, 2023 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants