Suit up!
A graphical way of installation was just implemented!
After quite some time of research and rest from constant development, I finally found out how the extension should be installed, removed, and provisioned for human usage.
The installer is still in very early stages of development, and I believe that some bugs still exist, despite my best efforts of testing various scenarios of installation (for now, it’s still fully proven to be working on Linux, with no guarantee of Windows or macOS functionality). So let me tell you what I achieved.
The offline installation framework
This installer fully works offline, provided you have a built and signed extension ready.
About its inner mechanisms
Chromium-based browsers (like Chrome, Edge, Brave and more) expect the extensions to be installed through one of these ways:
- An extension store, provided in browser’s configs (for Chrome the default is Chrome Web Store, other browsers often implement their own)
- Enterprise policies with force-install capabilities
- Through default startup install list
I chose the second option. It’s the only one that reliably lets me achieve one thing - locally hosted extension installation.
Why policies?
Well, Chromium-based browsers expect an update.xml file hosted through http, alongside the extension.crx file, which is signed using some private RSA key. I wanted local hosting for security reasons (so the user has more control of what happens on their pc rather than downloading something from the internet (more on that later)). Only way I can get true local installation is through those policies, as limitations apply using other methods.
How the installer’s lifetime goes
First of all, after user chooses desired browser profiles, it closes selected browsers, if any are open, hosts the installation server, deploys the policies, opens the browsers up briefly (installation can’t be performed in a closed browser), closes them again and provisions the shortcut (as one of this project’s goals was to integrate natively with Chromium’s Ctrl+Tab shortcut for switching tabs). After all that, all selected compatible browsers should have the extension installed. Uninstalling simply makes sure to remove any provisioned files (extension itself and the policies).
What limitations it has?
- Enterprise policies prevent the user disabling or uninstalling the extension through browser’s UI tools. It’s treated as “managed by organization”
- A “Managed by organization” label appears. It does not limit the functionality of the browser, but can be irritating
- If you don’t trust this software and the things it does (system file and registry changes, root access requirements and more) can feel a bit unsafe. On the other hand, the source is open and can be inspected by anyone at any time, altered or forked to fit your needs!
Next steps?
Well, the extension will still need some sort of way getting on your PC, so I’m thinking about these 2 methods:
- Making installer download it from the latest GitHub release
- Adding a –local-path= flag for custom, local builds and providing a script for auto-packaging the extension yourself
Also, I need to think about how the extension should be updated, but that’s for the future.
Thanks for reading, I’ll update you with the newest updates soon!