Skip to content

can't uninstall deprecated plugin fix - #8550

Open
UvuvDev wants to merge 2 commits into
devfrom
deprecation-uninstall-fix
Open

can't uninstall deprecated plugin fix #8550
UvuvDev wants to merge 2 commits into
devfrom
deprecation-uninstall-fix

Conversation

@UvuvDev

@UvuvDev UvuvDev commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

API fix for deprecated plugins being impossible to uninstall from UI. Fixes #8545

UvuvDev and others added 2 commits September 12, 2026 13:30
Legacy extension migration reused Extension::Install, which rejects
deprecated plugins. That's correct for fresh installs from the
marketplace, but it also blocked migrating a plugin the user already
had installed under the previous extension manager -- if the plugin
had since been deprecated, it could never be registered as installed
again, and so could never be uninstalled either.

InstallForMigration is the same call with only the deprecation guard
lifted, intended for use by the migration path only.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
New C API function affects linking, per the project's own convention
for BN_CURRENT_CORE_ABI_VERSION. Not a breaking change, so
BN_MINIMUM_CORE_ABI_VERSION is unchanged.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

@fuzyll fuzyll left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assuming the internal PR is accepted, these are the changes I would want to this API one.

Comment thread binaryninjaapi.h
bool Uninstall();
bool CancelUninstall();
bool Install(std::string versionID);
// Like Install, but also permits installing a version of a plugin that has since been marked

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't leave these AI-generated comments here. These don't do us any good. If this information is necessary (and I think it is, I would have no idea what this is for), we should have this documented in each externally-facing API we provide (e.g. in pluginmanager.cpp) so that it shows up in user-facing documentation.

Comment thread pluginmanager.cpp
}


bool Extension::InstallForMigration(std::string versionID)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems fine, but where are the Python and Rust equivalents? Also, see other note about moving documentation to here.

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.

cannot uninstall deprecated plugins

2 participants