如何分发原生Windows DLL以与XUL Firefox扩展中的js-ctypes一起使用

How to distribute a native Windows DLL to use with js-ctypes inside a XUL Firefox extension

本文关键字:扩展 js-ctypes 一起 Firefox XUL 原生 Windows 以与 DLL      更新时间:2023-09-26

我有一个Firefox XUL扩展,它使用js-ctypes使用本机Windows DLL。

分发此 DLL 文件的推荐方法是什么?

我已经设置了一个开发环境,就像XUL学校教程中描述的那样,但我不确定我应该对目录结构和相应的构建文件(Makefile,manifest等)进行哪些修改,以使我的DLL包含在XPI文件中,然后在客户端使用扩展时可用于js-ctypes。

任何指示将不胜感激。

问候!

通常您只需将DLL与其他内容一起压缩到XPI中并使用em:unpack=true,否则您将无法加载DLL。

然后,您可以使用例如附加组件管理器来找出DLL在用户系统上的实际安装位置,并使用js-ctypes加载它。

Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID(YOUR_ADDON_ID, function(addon) {
    //var uri = addon.getResourceURI(YOUR_RELATIVE_PATH_TO_THE_DLL);
    var uri = addon.getResourceURI("install.rdf");
    console.log("uri", uri.spec);
    if (uri instanceof Components.interfaces.nsIFileURL) {
        var file = uri.file;
        console.log("path", file.path);
    }
});

顺便说一句:当出于开发目的通过代理文件安装附加组件时,这些东西仍然有效。