【问题标题】:How to know whether a chrome extension is downloaded from store?如何知道是否从商店下载了 chrome 扩展程序?
【发布时间】:2017-09-11 20:20:52
【问题描述】:

我开发了一个与 Firefox/Edge/Opera 兼容的 chrome 扩展。

该扩展依赖于可通过网络访问的 REST API。在 Web 开发过程中,我更喜欢指向一个开发端点,它不会影响生产租户,只会影响开发实例和数据库。

那么我的问题就很简单了,我想做类似这样的伪代码:

if (extension.downloaded_from_store == true)
    endpoint = "https://api-dev.example.com"
else
    // The extension has been installed from a local directory
    endpoint = "https://api-prod.example.com"

你知道我怎么能做这样的事情吗(最好是从 background.js 页面)?

如果方案能兼容所有浏览器就完美了!

【问题讨论】:

    标签: google-chrome-extension firefox-addon-webextensions opera-extension microsoft-edge-extension


    【解决方案1】:

    我在管理模块的chrome文档中找到了答案:

    链接:https://developer.chrome.com/extensions/management#type-ExtensionInstallType

    ExtensionInstallType

    扩展程序是如何安装的。之一:

    • admin:由于管理政策而安装了扩展程序
    • 开发:扩展是在开发者模式下解压加载的
    • 正常:扩展是通过 .crx 文件正常安装的
    • sideload:扩展是由机器上的其他软件安装的
    • other:扩展是通过其他方式安装的 枚举 “admin”、“development”、“normal”、“sideload”或“other”

    这允许我执行以下操作:

    chrome.management.get(chrome.runtime.id, function(app_info){
        if (app_info.installType == "development"){
            endpoint = "https://api-dev.example.com";
        }
        else {
            endpoint = "https://api-prod.example.com";
        }
    });
    

    【讨论】:

      【解决方案2】:

      商店中的大多数 google chrome 扩展程序都有一个永久的扩展程序 ID。如果你打包了你的扩展,让它在每次更新时都使用相同的扩展 ID,那么你可以简单地对该 ID 进行硬编码,并首先在其中检查它。

      我推荐阅读更多关于packaging chrome extensions here.的内容

      特别是this part.

      【讨论】:

      • 这可能是一个想法。但是,我使用 Chrome 商店,所以我希望扩展程序是固定的,并且不会随着更新而改变。然后我需要了解如何为 Firefox 扩展、Opera 和 Edge 做同样的事情。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多