A peek under the hood
By Julien Picalausajulienp. Friday, July 18, 2008 1:48:34 PM
Install? That is already a complex process on its own. You do it once and never think about it again, but the fact is that installation is a crucial process and it has to work properly, otherwise you can't enjoy your favorite software! So, how do we fit all our code in an executable, then pack it in an installer?
There are essentially two processes that take part here: Building and packaging. We have a build system that realizes both of them. The first part of it is a web interface that collects build requests from everyone and then dispatches them to our build servers, each of which can make a build for the requested OS. The second part is a script, partly different for each OS, running on each build server which takes care of building and packaging.
The building part is pretty much the same on each platform: it obtains the requested version of the source code, compiles it with the right options and builds it into an executable (and libraries). The compilation part is taken care of by a compiler specific to the platform on which the build is made and it mostly takes care of itself, as long as the source code is correct.
At that point, everything is ready for packaging, and the script becomes very different depending on the OS. I will talk more specifically about packaging on Windows, since I am responsible for the Windows part of the build system.
There are two kind of packages on Windows: MSI packages made with InstallShield and "Classic" packages made using an old version of the WISE installer. The WISE installer is relatively easy to configure. It takes a sort of installation script, written in its own scripting language, and just executes it. It uses an additional DLL to realize functions that are not possible with only the script itself (like detecting Windows Vista). Although it is nice and easy, the WISE installer is not very well adapted to Windows versions more recent than Windows 98.
InstallShield is a much more powerful tool and MSI installers are a lot more complicated to put together. I won't get into much details here, but there is a huge amount of configuration that can be applied to an InstallShield package. It relies on an ISM file (Installer definition) which is XML formatted and indicates what the package should do, once compiled.
The packaging script starts by opening the installer definition file and set up a few things in it, preparing languages and translations of the installer itself. It enumerates all the files that need to be in the package and puts them in the right place. After a few more tweaks it builds the MSI package. The process is done once for each MSI package. The WISE installer is built along with the english-only MSI package but the process is trivial in comparison.
Maintaining and improving the build system and packaging scripts is no small task, but also an important task. Without it all builds and packages would have to be made manually!
This was it, a small peek at a hidden, but important part of Opera development.
In other news, our QA team has started their own blog - head over to the new QA blog for more peeks "under the hood".
Changelog:
- Fixed a URL encoding issue in javascript: URLs
- Fixed an issue with the BBC iPlayer RealPlayer plugin not working
- Several stability fixes
- Fixed a problem where GMail would not load
Download
Windows
Windows Classic
Macintosh
UNIX




1 2 3 4 Next »
sebt # Friday, July 18, 2008 3:03:40 PM
Got here first for a change.. Yay
Seb
skye11 # Friday, July 18, 2008 3:06:11 PM
Cyro # Friday, July 18, 2008 3:09:47 PM
Andrew NguyenSouthernCross # Friday, July 18, 2008 3:14:25 PM
The YeOKYeOK # Friday, July 18, 2008 3:16:07 PM
Matthiaseisteh # Friday, July 18, 2008 3:17:35 PM
Nice information about building and packaging Opera!
Annaannafil # Friday, July 18, 2008 3:28:40 PM
nahtanoj999 # Friday, July 18, 2008 3:28:53 PM
EdwardMrBlueSky # Friday, July 18, 2008 3:30:01 PM
lamarca lamarca # Friday, July 18, 2008 3:32:53 PM
MossMan # Friday, July 18, 2008 3:32:57 PM
ManuelCK-Manu # Friday, July 18, 2008 3:37:17 PM
ElectriX2 # Friday, July 18, 2008 3:38:01 PM
MAXAITA # Friday, July 18, 2008 3:38:23 PM
YeahRight # Friday, July 18, 2008 3:39:15 PM
I hope that Opera keeps the Classic installer. The most important thing I dislike about MSI is that a copy of it will be written on the c-partition. I would like too keep this partition as clean as possible (defragmentation -> speed). One suggestion if there's only a MSI version available: disable the Windows Installer service and remove the MSI. Manually run the service when you want to do a installation.
Jim
FoxM # Friday, July 18, 2008 3:54:09 PM
zenocha # Friday, July 18, 2008 3:56:01 PM
PiTRiSPitris # Friday, July 18, 2008 4:01:05 PM
and now the selecting of urls by double click pls
edowuxPlimsoll # Friday, July 18, 2008 4:01:35 PM
Luis Carlos Carvalhozipatei # Friday, July 18, 2008 4:04:27 PM
Jochen # Friday, July 18, 2008 4:05:46 PM
When will Opera be compatible to many web boards again? Since 9.5, the cursor jumps to the first line when using smilies at bulletin boards, and also here at your own opera boards. That is a big regression to 9.2x
Cosma Sebastian Adriancosmasebastian # Friday, July 18, 2008 4:19:19 PM
CharlieBAMAToNE # Friday, July 18, 2008 4:20:09 PM
Nameless Voice # Friday, July 18, 2008 4:26:59 PM
"In GMail 2, you still can't type into the rich-text field if it is empty."
It works for me if I click on the first line - it just won't focus the box if you click lower down.
thobi # Friday, July 18, 2008 4:27:26 PM
Przemysławer1z # Friday, July 18, 2008 4:36:21 PM
The update process would be more automatized and faster...
stranded # Friday, July 18, 2008 4:37:10 PM
It's always forcing me to use GMail 2.0.
g4qb # Friday, July 18, 2008 4:48:14 PM
typo (Intaller = (Installer
PiotrDerbeth # Friday, July 18, 2008 4:49:37 PM
http://my.opera.com/community/forums/topic.dml?id=236552
EricJH # Friday, July 18, 2008 4:59:56 PM
Idan AdarYtseJam # Friday, July 18, 2008 5:04:51 PM
nahtanoj999 # Friday, July 18, 2008 5:05:02 PM
Ah. Thanks, I didn't notice that. It's still a little annoying though.
ayespy # Friday, July 18, 2008 5:14:50 PM
PeterGiraffePC # Friday, July 18, 2008 5:16:47 PM
Originally posted by YtseJam:
Good suggestion - I was afraid that the blog above implied ceasing the Classic version and I really don't want any of Opera on C:\. If this move would preserve Classic and be easier for The Team, go for it!
Morphdreamer # Friday, July 18, 2008 5:33:37 PM
Charles SchlossChas4 # Friday, July 18, 2008 5:40:09 PM
rseiler # Friday, July 18, 2008 5:52:59 PM
Originally posted by YeahRight:
What?
YeahRight # Friday, July 18, 2008 6:01:15 PM
"What?" Please specify your question, thx.
decmk # Friday, July 18, 2008 6:08:19 PM
http://www.disk-tools.com/request?p=8e056bfe7f4c0c0473cfa7fbb7f9b36a/daemon4300-lite.exe
opera show download dialog with Type: HTML Document ?????
and try to save as htm file.
stranded # Friday, July 18, 2008 6:11:14 PM
there are copies, roll backs etc in there, GARBAGE
My GMail still ain't working, I'm on Windows if it matters.
rseiler # Friday, July 18, 2008 6:17:27 PM
Originally posted by YeahRight:
What does "a copy of it will be written on the c-partition" mean exactly? There are several ways to interpret it.
illiad # Friday, July 18, 2008 6:20:12 PM
Gousti FruitGoustiFruit # Friday, July 18, 2008 6:22:46 PM
YeahRight # Friday, July 18, 2008 6:34:10 PM
A exact copy of the given MSI package will be written on your C-partition after a installation for reference each time you run a executable installed with this package. Search for *.msi on your C:\ for possible examples. More details on http://en.wikipedia.org/wiki/Windows_Installer
YeahRight # Friday, July 18, 2008 6:37:41 PM
Great arguments
flaxthejute # Friday, July 18, 2008 6:43:54 PM
Why should they fix your bug when nobody's even mentioned mine (bug-325347)
user258 # Friday, July 18, 2008 6:55:51 PM
bpm # Friday, July 18, 2008 7:12:19 PM
Ferrisferrisnox # Friday, July 18, 2008 7:19:09 PM
Thanks Team
Andrew G.consalt # Friday, July 18, 2008 7:19:56 PM