1

我有一个 FireFox 插件,它使用最新的 Firefox ESR(当前为 24.6.0)成功安装,但在尝试安装最新的 Tor Browser Bundle 时返回此错误。

我的 Test WebDriver 无法安装,因为它与 TorBrowser 24.6.0 不兼容。

Tor 浏览器版本

为什么 Tor 浏览器说这不兼容,而 Firefox 24.6.0 却说?以及如何修改我的 .xpi 以使其正常工作?

这是我的install.rdf

<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">

    <Description about="urn:mozilla:install-manifest">
        <em:id>test@example.com</em:id>
        <em:version>2.42.0</em:version>
        <em:name>My Test WebDriver</em:name>
        <em:description>WebDriver implementation for Firefox</em:description>
        <em:creator>Simon Stewart</em:creator>
        <em:unpack>true</em:unpack>

        <!-- Firefox -->
        <em:targetApplication>
            <Description>
                <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
                <em:minVersion>17.0</em:minVersion>
                <em:maxVersion>10000.0</em:maxVersion>
            </Description>
        </em:targetApplication>

        <!-- Platforms where we're not compiling the native events -->
        <em:targetPlatform>Darwin</em:targetPlatform>
        <em:targetPlatform>SunOS</em:targetPlatform>
        <em:targetPlatform>FreeBSD</em:targetPlatform>

        <!-- Platforms where we are -->
        <em:targetPlatform>WINNT_x86-msvc</em:targetPlatform>
        <em:targetPlatform>Linux</em:targetPlatform>
    </Description>

</RDF>

我正在尝试使用手动.xpi让 Selenium WebDriver 与Tor Browser Bundle一起使用。

4

1 回答 1

2

这里的问题实际上是你的targetPlatforms. TorBrowser 以不同的方式编译以允许它们进行确定性构建。特别是 Tor 浏览器是由一些 mingw-gcc 编译的,而官方 Firefox 是由 MSVC 编译器编译的。

请记住targetPlatform

一个字符串,指定插件支持的平台。它包含单独的 OS_TARGET 值或与 TARGET_XPCOM_ABI 组合的值,用下划线 (_) 分隔。

在 TorBrowser 中,OS_TARGET仍然是WINNT,但XPCOMABI显然是x86-gcc3。因此,您targetPlatform的 ofWINNT_x86-msvc与预期不符WINNT_x86-gcc3

顺便说一句:您可以从正在运行的浏览器实例中获取OS_TARGET和获取XPCOMABI,例如通过在选项卡上打开 Web 控制台about:newtab并执行: </p>

Services.appinfo.OS
// and
Services.appinfo.XPCOMABI

因此,首要任务是尝试添加WINNT_x86-gcc3到您targetPlatform的 s.

由于您显然有二进制组件,这可能会或可能不会工作......不确定 MSVC 编译的“胶水”是否与 gcc 编译的兼容,因此您的二进制组件可能仍然无法加载。然后,您可能必须使用适当的编译器为不同的目标重新编译您的组件(mingw-gcc 的东西;请参阅关于此的 TOR 确定性构建文档),或者,从长远来看,这可能会更好,切换到 js- ctypes 和常规的 C API/ABI 库(如果可能)。

于 2014-06-13T13:35:45.073 回答