是否可以将多个 Chrome 扩展打包在一起?

Is it possible to package multiple Chrome extensions together?

Google 是否允许您将多个单独的扩展打包在一起,以便用户只需单击一下即可安装所有这些扩展?

我还没有找到关于此事的任何信息,所以我认为目前不可能。

我问是因为我正在创建有用的上下文菜单选项,这些选项自然属于几个不同的类别,我想避免强制嵌套,如果我将所有内容都放在一个单一的扩大。

如果我做 3 个单独的扩展,那么我可以将它们都设置为顶级选项,从而创造更方便的用户体验。但是,如果可能的话,我想避免让用户启动 3 个单独的下载。

回答您的第一个问题:不行,Google 不允许您将多个扩展打包在一起。每个扩展都有自己的 Chrome 网上商店页面和 ID。 Google 让普通用户安装它的唯一方法是从商店下载它。

另一方面,你是说:

I am in the process of creating useful context menu options, These options naturally fall under a few distinct categories [..]. If I make 3 separate extensions, then I can make all of them top-level options, thus creating a more convenient user experience.

让我们澄清一下这件事。我假设您已经知道 Chrome 扩展应该只有一个目的,并且您显然不想违背这个逻辑。顺便说一下,考虑以下几点:

  • 为什么要单独写扩展?

    • 每个扩展的不同行为彼此之间特别不同。例如,其中一个存储浏览数据,另一个翻译页面,另一个仅在某些页面上给出页面操作以操纵它们。
    • 扩展共享相同的通用超级逻辑,但在不同的子逻辑中有所区别。例如,允许用户在某些页面中注入代码的扩展程序和允许注入某些媒体或 CSS 样式的另一个扩展程序。
    • 这些扩展都与 sites/things 的同一类别相关,但它们中的每一个都为用户提供了完全不同的服务。例如,一些扩展程序都可以在购物网站上运行,但是:其中一个扩展程序检查与其他站点的价格以进行比较,另一个允许您存储来自不同站点的文章以查看其浏览器操作中的总数,等等。

  • 为什么要为多个目的编写一个扩展?

    • 每个扩展的行为彼此相似。例如其中一个让你在某个社交网络上分享链接,另一个让你分享照片。
    • 创建多个扩展不会消除使用外部消息在它们之间进行消息传递的需要。
    • 扩展可以由用户配置为具有完全相同的行为,或完全不同的行为。你不知道哪个用户要分开,哪个用户要连接他们。
    • 用户可以选择扩展的行为(在设置页面或安装时)。

这些是我想到这个的一些基本点,我知道这显然主要是基于意见,所以你可能不会想到同样的事情,但这只是为了帮助你弄清楚如何去做继续你的扩展。


如果您决定使用不同的扩展程序,您可以对每个扩展程序进行编程以推荐用户下载其他扩展程序(通过检查它们是否已安装), 或者也许(但我不以任何方式推荐你这样做)强制用户一起安装它们(同时检查丢失的)。

这是一个示例,说明如何使用 chrome.management.get():

检查您的扩展是否已安装
var ext2installed = false;

chrome.management.get("<extension2-id>", function(info) {
    if (info) ext2installed = true;
});

显然,如果您使用三个扩展,这可能会有点重复,但没什么可笑的,您只需要为每个扩展添加代码以检查是否安装了其他两个扩展。