-
Notifications
You must be signed in to change notification settings - Fork 34k
Closed
Labels
extensionsIssues concerning extensionsIssues concerning extensionsfeature-requestRequest for new features or functionalityRequest for new features or functionalityon-testplan
Milestone
Description
Extension identification is essential to the update mechanism. It is through an identifier that we're able to match several extension versions against one another.
We are currently using the publisher.name
tuple as an identifier. This is very beneficial in some scenarios such as VSIX side-loading, in which updates would still work seamlessly.
The Marketplace team intends to provide publisher/extension renames. This will break our assumptions that the publisher.name
tuple is valid during its entire lifecycle. So we must only rely on the marketplace UUID returned from the Marketplace, which will stay consistent in renaming situations.
This needs to be adopted in a few places:
- We should store the marketplace UUID into the extension's manifest, as soon as we are aware of it. Installing extensions from the Marketplace should immediately store that UUID.
- Internally, extension matching should always be based on UUID. This should be the stored marketplace UUID or, in case it is nonexistent, the tuple
publisher.name
. - Our outdated mechanism currently prevents the loading of and deletes older versions of an extension, if multiple versions are installed into the user's extensions folder.
- At startup, whenever an installed extension is found without UUID, we should attempt to match it against a marketplace extension and, if matched, store that UUID.
- At VSIX installation time, we should attempt to match the extension against a marketplace extension and, if installed and matched, store that UUID.
cc @sandy081
jens1o, Binaryify, eamodio and YukaiiBinaryify and jens1o
Metadata
Metadata
Assignees
Labels
extensionsIssues concerning extensionsIssues concerning extensionsfeature-requestRequest for new features or functionalityRequest for new features or functionalityon-testplan