I have received some comments on the MAR component patch. Most of it regarding a Interface change, which I am not prepared to do at the moment. There is also a bzip2 issue that still needs to be addressed.
So while wondering how to get that issue resolved, I decided to create a small (a little on the ugly side) XUL app that will generate a complete MAR file that is compatible (I believe that to be true right now, unless I overlooked something) with the Mozilla update system. That is, files are bzip2’d before being put inside the archive.
I haven’t done extensive testing yet. Though, its simple enough that it probably won’t break on you.
There are known issues with it right now that will be fixed with time :
- Its not localized yet, as I hardcoded all the messages.
- It’s one xul file with js in it, so the project still needs to be structured properly.
- One thing you may have to change is the location of the bzip2 utility. Until the bzip2 issue is resolved, the xulapp calls an outside process to handle the compression. The default is /bin/bzip2. If your system has it in a different location, you will need set the appropriate setting in defaults/preferences/prefs.js (there are only two setting at the moment).
- I don’t know how to properly use threads, from JS. I can’t create JS threads, and settimeout() won’t work for what I need to do.
Until that is resolved, the xul window will appear to freeze until the MAR file has been created. This is normal.
- Needs some documentation. But at this point, you can probably figure it out.
- The MAR file should be created in a temporary environment. After you copied the mar file, feel free to delete the remaining files. You can’t specify where to save yet
- It will recurse and copy all files from the root directory and above. There is no way to select certain files, yet.
- You cannot extract MAR files yet.
If your feeling brave or just interested. You can grab a linux build
MAR_generator.tar.bz2 – version 0.1
Windows and MAC builds too someday. Hopefully soon! *hint hint, nudge nudge*