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

Is it possible to package multiple Chrome extensions together?

本文关键字:程序 扩展 在一起 Chrome 是否      更新时间:2023-09-26

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

我无法找到有关此事的任何内容,因此我认为目前不可能。

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

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

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

另一方面,你是说:

我正在创建有用的上下文菜单选项,这些选项自然属于几个不同的类别[..]。如果我制作 3 个单独的扩展,那么我可以将它们全部设置为顶级选项,从而创建更方便的用户体验。

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

  • 为什么要编写单独的扩展?

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

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

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

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


如果您决定使用不同的扩展,您可以对每个扩展进行编程以建议用户下载其他扩展(通过检查它们是否已安装),或者可能(但我不以任何方式建议您这样做)强制用户完全安装它们(也检查缺少的)。

下面是如何使用chrome.management.get()检查扩展安装的示例:

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

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