Click to return to the Component Development home page    
Web Workshop  |  Component Development

A Short History of Code Download


Michael Edwards


Developer Technology Engineer
Microsoft Corporation

April 16, 1998

Editor's note: This is a short companion piece to another Michael Edwards article, Downloading Code on the Web.

People were installing code long before the Internet came along. And, since I firmly believe that a little bit of perspective helps make sense of change (humor can't hurt, either), I wanted to share this summary of the evolution of PC code installation.

Code Download Before the Internet (Before Windows, Even!)

When I bought my first personal computer, a Commodore 64, games shipped on a single 160K floppy. You didn't have to "install" them, since there wasn't anything to install them to. As an added bonus, there wasn't anything they could do to your computer that rebooting wouldn't fix.

Then personal computers started getting hard disks, and developers could make their programs bigger (with bigger, multi-disk data files) because they could copy everything onto a single platform. Even so, things were still pretty simple. Most of the time developers wrote small batch files to transfer all the files on their floppies to a directory on the hard disk. At worst, you had to be able to create a boot disk if your application needed special device drivers or something. But you never worried about installing a new application and watching it run amuck, screwing up other programs in the process. Rebooting remained the answer for any problem, and since you only used one program at a time, the most you would ever lose was your high score.

But then along came Windows®. Now if you wanted things to work, you had to copy certain files to certain places, modify certain settings, and more. In short, applications had to coexist with other stuff on a user's machine. So, in the early days of Windows 3.0, you started seeing setup utilities. Setup had reached a critical mass in complexity, enough to warrant being a separate application. However, knowing what bits to twiddle where was rocket science, and most people were screwing it up.

Along Came Windows 95

Finally, in May 1995, just before Windows 95 shipped, Teri Schiele wrote the definitive setup article for MSDN, Windows 95 Application Setup Guidelines for Independent Software Vendors. This article, combined with the InstallSHIELD SDK included with Visual C++® 4.0, demystified the process of implementing a decent Windows setup application. For a while, people were a little happier.

To ship Windows 95, Microsoft needed to put lots of stuff on as few disks as possible (can you say "cost of goods" or "ease of installation"?). That's when Cabinet technology first surfaced. With Cabinet technology, you could compress multiple files inside a single cabinet (CAB) file. For big jobs, your cabinet could span multiple disks and increase compression by lumping all files together (instead of compressing each file separately). Windows 95 Setup also greatly expanded the INF file format used for storing setup configuration information and driving the setup process. The INF file format had been around since the very beginning (that would be Windows 1.0), and was used by the InstallSHIELD SDK, so it made sense to enhance it instead of coming up with something completely different. So the INF file format was extended to describe the contents of a cabinet file and how they should be installed. While this new cabinet stuff was only available for Windows 95 setup, more and more software publishers were looking for something like cabinets to make installing their own products easier. But nothing changed until Microsoft decided to embrace the Internet. Hold on to your seat, because now the pace of change really speeds up.

Microsoft "Embraces" the Internet

The early versions of Internet Explorer were mostly about Web browsing. It wasn't until Microsoft starting building and marketing ActiveX® technology that it became really important (and strategic) to improve users' ability to install code over the Web. If we wanted Web page developers to embrace ActiveX, we needed to make it easier for them to install ActiveX controls. So when Microsoft released Internet Explorer 3.0 in the summer of '96, the CAB technology originally developed for Windows 95 Setup was (finally) made available to third-party developers (see Reducing Download Times with Cabinet Files: The Problem and a Solution on MSDN Library Online). Soon thereafter, the CAB SDK was born, which provided tools to distribute compressed, executable, and data files over the Internet using Internet Explorer 3.0.

About that time, it was also becoming apparent that security was a bit of a problem on the Web. Pirates (and others with few scruples) were figuring out that trashing other people's computers was a great way to build a reputation as a hacker. So, with Internet Explorer 3.0, Microsoft also introduced Authenticode™ 1.0. Authenticode identifies code publishers and assures end users that software has not been modified by anyone else before or during the download process. With Authenticode, third-party developers digitally sign their downloads, and users decide whether to download them based on their perception of the publisher (i.e., do I really trust that this code from Joe's Software Garage is on the up-and-up?).

Also at that time, Java was well on its way to fame and fortune. Internet Explorer 3.0 was designed to address the security issues Java raised, which mostly occurred if you wanted your Java applets to be able to access local resources.

And then Came Internet Explorer 4.0

The Internet is becoming increasingly important as a software distribution channel, even though it is vulnerable to hackers with malicious intent. To help with this, Internet Explorer 4.0 added features to make it easier for users to have a secure experience when a Web page wants to download something. Internet Explorer 4.0 also expanded on the features for packaging and conducting downloads expanded. But it accomplished these things by adding new options not supported by previous versions (which Downloading Code on the Web discusses in great detail).

Which brings us to where we are now. A lot of people are still using Internet Explorer 3.x and other browsers, and many of you need and want to support them. So, in the accompanying article, Downloading Code on the Web, I'll focus on explaining the code download features that are available for both Internet Explorer 3.x and Internet Explorer 4.x, as well as introduce the new features that are only available on Internet Explorer 4.x.



Back to topBack to top

Did you find this material useful? Gripes? Compliments? Suggestions for other articles? Write us!

© 1999 Microsoft Corporation. All rights reserved. Terms of use.