2015-01-07 77 views
3

我開發了一個在Firefox下正常工作的二進制擴展,但無法設置在XULRunner/GeckoFX中。該擴展沒有UI,只是向我們的主應用程序(.NET)提供了一個API。如何在XULRunner/GeckoFX中部署Firefox擴展?

我可以找到的所有教程解釋如何將它們安裝到XULRunner 應用程序。但通過使用GeckoFX,XULRunner運行嵌入在我的項目中,所以我沒有XULRunner應用程序。

我已經嘗試將已安裝的擴展的目錄從Firefox的配置文件目錄複製到XULRunner的配置文件,並且也使用FF配置文件目錄作爲GeckoFX,都無濟於事。

我目前的懷疑是擴展的targetApplicationinstall.rdf需要調整GeckoFX,但什麼是正確的ID?

由於我們在我們的項目中部署了嵌入式GeckoFX/XULRunner,所以我不需要擴展管理器,靜態部署就足夠了。

回答

3

我終於設法讓它工作。下面是我所做的:

首先,添加在擴展使用Xpcom.ComponentRegistrar.AutoRegister()部署的位置:

void RegisterExtensionDir(string dir) 
{ 
    Console.WriteLine("Registering binary extension directory: " + dir); 
    var chromeDir = (nsIFile)Xpcom.NewNativeLocalFile(dir); 
    var chromeFile = chromeDir.Clone(); 
    chromeFile.Append(new nsAString("chrome.manifest")); 
    Xpcom.ComponentRegistrar.AutoRegister(chromeFile); 
} 

其次,不要使用ABI標誌擴展的chrome.manifest。因此,而不是

binary-component components/GeckoScraper.dll ABI=WINNT_x86-msvc 

我用

binary-component components/GeckoScraper.dll 

我認爲這GeckoFX 29的錯誤,並創造了,一個issue

+0

「dir」是.xpi文件的路徑嗎?我正在尋找一種方法來將附件安裝到'GeckoFX'上,但找不到方法。 – TEK

+0

另一個來自bitbuchet的複製粘貼回答不起作用。你有沒有設法找到解決方案? –