以编程方式卸载功能

Programmatically uninstall feature

我正在寻找一种方法来卸载我产品中的特定功能。现在安装的功能需要替换为具有相同名称的功能,但在更新期间与其关联的不同版本和不同插件 - 旧版本产品正在更新为新版本。

我做了一些研究,发现 org.eclipse.equinox.p2.operations.UninstallOperation 看起来我可以使用。我还在 p2.inf 中看到 instructions.uninstall 阶段看起来相关。

卸载功能的 preferred/better 方法是什么?

这是一个常见的误解:p2.inf install/uninstall 指令 不会 更改已安装的单元,但描述了应该执行的低级操作在可安装单元的 installation/uninstallation 期间执行。