Please sign in to access this page

crx_to_xpi

crx_to_xpi

11 devlogs
12h 4m
•  Ship certified
Created by Benjamin Yang

A WebExtension and native app to convert Google Chrome extensions for use in Firefox.

Timeline

Ship 2

1 payout of shell 111.0 shells

Benjamin Yang

19 days ago

Benjamin Yang Covers 9 devlogs and 10h 28m

Fixed an issue where extensions would end up with ids such as msgappname or similar. As my code generated the id based on extension name, if an extension had this as their name in the manifest (i18n locales handling) then its name would show up normally in the browser, but the script could not handle it, resulting in such an extension id. This was fixed by having the script scan for the i18n message in the _locales directory of the extracted crx, and use that instead.

Update attachment

Added the install script and extension packaging to the actions workflow.

Update attachment

Made a python install script that can later be converted with pyinstaller for easy installation process on all os. Currently it downloads the native messaging executable from github and registers the native manifest, and the user only has to run this and install the extension.

Update attachment

Spent way too long setting up gh actions to build the python script into an executable file. It simplifies the installation process as there is no longer a need for setting up venv etc

Update attachment

Fixed an issue where installing multiple extensions in quick succession resulted in an error of address already in use, by making the temp server shut down as soon as it finished serving a file. Also fixed some issues on the extension end...

Update attachment

Fixed an issue where with larger files, the connection to the temporary server would be reset and the file could not be downloaded. This was because due to Firefox security, an extension can only be programmatically installed in the same event frame as a user action (button press etc) so now when the extension has been converted, it shows another button to install it, bypassing this.

Update attachment

Created an installation script for installing the native messaging manifest, setup python venv, etc. Eventually it will be easier once i package the script into a single executable without need for external python

Update attachment

Implemented the communication between the browser extension and a python script that allows the extension to send extension info to the script, after which it will be downloaded, converted to xpi, then hosted on a temporary http server which the extension opens for user to confirm installation. Also implemented changing of Chrome service_worker to Firefox scripts in the manifest.

Created the start of a Firefox extension, which adds the add to firefox button to the webpage. Currently working on an implementation to communicate with the script using extensions native messaging for the script to handle conversion. (bypass webextensions restrictions)

Update attachment

Ship 1

1 payout of shell 6.0 shells

Benjamin Yang

2 months ago

Benjamin Yang Covers 1 devlog and 1h 35m

The initial version of the app can take a local crx or download it from a url, and zip it into xpi format with required parameters for use in Firefox.

Update attachment