Creating Software Update ChannelsCreating Software Update Channels*
*Contents  *Index  *Topic Contents

*Previous Topic: Creating Active Desktop Items
*Next Topic: CDF Reference

Creating Software Update Channels

Software Update Channels are specialized channels that provide the ability to notify users of software updates and also to deliver and install program files onto users' computers.

Software developers can use Software Update Channels as a method of delivering updated versions of their software to their users. All users who subscribe to the developer's Software Update Channel will receive notification that a new version is available.

Corporations can use Software Update Channels to distribute applications and software updates to all of the desktops connected to their corporate network instead of updating each system individually.

Distributing Software

To distribute software using a Software Update Channel, the developer or corporation needs to:

  1. Create a Software Update Channel.
  2. Create an Open Software Description (OSD) file.
  3. Create a distribution unit.

Creating a Software Update Channel

A Software Update Channel is defined with a Channel Definition Format (CDF) file, which is written in the Extensible Markup Language (XML). For more information on CDF files, see CDF Reference for Active Channels. For Software Update Channel extensions to the CDF, see VERSION= (SOFTPKG)
. For information on XML, see XML Object Model documentation.

The VALUE= attribute of the USAGE tag is set to the value "SoftwareUpdate" in the CDF file to notify Microsoft® Internet Explorer 4.0 that this is a Software Update Channel. The shortcut for the channel will be created in the Software Updates folder in the Favorites menu.

For a Software Update Channel, the CDF file would contain details on the software distribution unit available. These details include:

The following is an example of a CDF file for a Software Update Channel for a fictitious company, Awesome Computers.

<CHANNEL HREF="http://www.server.com/setup-page.htm">
<SELF HREF="http://www.awesome_computers.com/awesome_comp.cdf" />
<USAGE VALUE="SoftwareUpdate" />
<TITLE>Awesome Computer's Software Update Channel</TITLE>
<ABSTRACT>Awesome Computers' site for updated drivers and programs for all our awesome systems.
</ABSTRACT>

<LOGO HREF="http://www.awesome_computers.com/ac-channel.gif" STYLE="IMAGE" />
<LOGO HREF="http://www.awesome_computers.com/ac-channel.ico" STYLE="ICON" />

    <SOFTPKG NAME="{D27CDB6E-AE6D-11CF-96B8-444553540000}" 
        HREF="http://www.awesome_computers.com/Update.htm"
        VERSION="2,0,0,0"
        AUTOINSTALL="Yes"
        STYLE="MSICD">
        <TITLE>Update for the system diagnostic control for Windows 95</TITLE>

        <ABSTRACT>System diagnostic control that tracks download efficency information.
        </ABSTRACT>

        <USAGE VALUE="email" />
        <IMPLEMENTATION>
                <OS VALUE="win95" />
                <CODEBASE HREF="http://www.awesome_computers.com/diagnostic.cab" />
        </IMPLEMENTATION>
    </SOFTPKG>
</CHANNEL>

The NAME= attribute of the VERSION= (SOFTPKG)
tag contains the unique string name for the distribution unit, which is a GUID in the example.

The TITLE tag contains the friendly title that is used to notify the user of the software distribution unit's availability.

The IMPLEMENTATION tag contains the information on the operating system and the location of the code. The VALUE= attribute of the OS tag indicates the operating system for which the distribution unit is available (Microsoft® Windows 95® in the example), and the HREF= attribute of the CODEBASE tag indicates the location of the distribution unit. If no CODEBASE tag is provided, the Active Channel acts as an advertisement for the software package. The content in the ABSTRACT tag should contain information about where to download the advertised software package.

The CDF file should contain scheduling information so that the user's computer knows how often to check the server for updates. The schedule should also provide information to let the user's computer randomize its checks. For details about adding schedule information to the CDF file, see the SCHEDULE tag in the CDF Reference for Active Channels.

For Software Update Channels that are provided for a one-time download, the DELETEONINSTALL tag can be added inside the VERSION= (SOFTPKG)
tag in the CDF file. The channel will be deleted after the installation of the software package has been completed.

Creating the Open Software Description file

The Open Software Description (OSD) file is also written in XML and is similar to the CDF file. This file contains the information about what the user's computer needs to do after it downloads the distribution unit from the server. For more information on OSD files, see http://www.microsoft.com/sitebuilder/standards/osd/External link. For more information on XML, see http://www.microsoft.com/sitebuilder/standards/xml/External link.

The following example is a sample OSD file for Awesome Computer's updated diagnostic control that indicates a download location for the updated control.

<?XML version="1.0" ?>
<!DOCTYPE SOFTPKG SYSTEM "http://www.microsoft.com/standards/osd/osd.dtd" >
<?XML::namespace href="http://www.microsoft.com/standards/osd/msicd.dtd" as="msicd"?>

<SOFTPKG NAME="{D27CDB6E-AE6D-11CF-96B8-444553540000}" VERSION="2,0,0,0" STYLE="MSICD">
    <TITLE>System diagnostic control for Windows 95</TITLE>
    <ABSTRACT>This distribution contains updated diagnostic control.
    </ABSTRACT>

    <msicd::NATIVECODE>
        <CODE   NAME="diagnose.ocx"
                        CLASSID="{D27CDB6E-AE6D-11CF-96B8-444553540000}"
                        VERSION="2,0,0,0">
                <IMPLEMENTATION>
                    <OS VALUE="win95" />
                    <CODEBASE HREF="http://www.awesome_computers.com/diagnose.cab" />
                </IMPLEMENTATION>
        </CODE>
    </msicd::NATIVECODE>
</SOFTPKG>

The <!DOCTYPE SOFTPKG SYSTEM "http://www.microsoft.com/standards/osd/osd.dtd" > line sets the Document Type Definition (DTD) file, which defines the formal grammar for a type document. In this case, it is defining the grammar for an OSD file. This file allows an XML parser or other verifier to check if the OSD file is well-formed.

The <?XML::namespace href="http://www.microsoft.com/standards/osd/msicd.dtd" as="msicd"?> line specifies additional legal elements that will use the name space identifier defined by the as= attribute. For this example, the name space is "msicd".

The NATIVECODE tag defined in the Msicd.dtd file notifies the user's computer that the distribution unit is written in the native code of the operating system noted in the VALUE= attribute of the OS tag. The JAVA tag is used if the distribution unit contains a Java class, a Java application, or JavaBeans.

The DEPENDENCY tag can be added inside the VERSION= (SOFTPKG)
tag section to indicate a software dependency. The DEPENDENCY tag allows developers or corporations to have the distribution unit downloaded only if certain conditions exist. For example, you could set a dependency that a particular distribution unit has to be installed. If it is installed, it will download a distribution unit that contains a patch for the installed software.

Describing Java packages

Describing Java packages is similar to describing native code distribution units, except they use the JAVA tag instead of NATIVECODE and the PACKAGE tag instead of CODEBASE.

The following example shows the VERSION= (SOFTPKG)
tag section that describes a Java package.

<SOFTPKG NAME="StorePackage" VERSION="1,0,0,0">
<TITLE>The StoreData class</TITLE>

<ABSTRACT>StorePackage contains a single class called StoreData.
</ABSTRACT>

<msicd::JAVA>

    <PACKAGE NAME="com.ms.StorePackage" VERSION="1,0,0,2">
    <IMPLEMENTATION>
    </IMPLEMENTATION>
    </PACKAGE>

</msicd::JAVA>

</SOFTPKG>

Describing Java applications

The following example shows the VERSION= (SOFTPKG)
tag section that describes a Java application.

<SOFTPKG NAME="Some Application for Java" VERSION="1,0,0,0">

    <TITLE>MS Office for Java</TITLE>

    <ABSTRACT>Some Application for Java is a standalone Java application.
    </ABSTRACT>

        <msicd::JAVA>
            <NAMESPACE>Some Application for Java</NAMESPACE>
            <PACKAGE VERSION="1,0,0,2">

                <IMPLEMENTATION>
                </IMPLEMENTATION>

            </PACKAGE>

        </msicd::JAVA>

</SOFTPKG>

Describing JavaBeans

The OSD file can describe both JavaBeans and Microsoft® ActiveX™ Controls wrapped as JavaBeans. ActiveX Controls wrapped as JavaBeans require the CLASSID= attribute in the CLASS element and the ICON or TYPELIB element, while a regular JavaBean does not require these elements.

The following is a sample description of an ActiveX control wrapped as a JavaBean.

<msicd::JAVA>

    <NAMESPACE>some-namespace-string</NAMESPACE>

    <PACKAGE NAME="com.ms.JPMBrowser" VERSION="1,0,0,0">
        <CLASS NAME="Browserbean" CLASSID="{383807B5-2C60-11D0-A31D-00AA00B92C04}">
            <ISBEAN />
            <ICON FILENAME="Browser.ico" />
            <TYPELIB CLASSID="{...}" />
        </CLASS>
    </PACKAGE>
    <IMPLEMENTATION />
</msicd::JAVA>

Creating a distribution unit

The distribution unit contains the OSD file and the files that belong to an application. These files are compressed using the cabinet (CAB) compression format. The CAB file then must be digitally signed by a certificate authority. For more information on CABs, see the CAB SDK, which is provided as a self-extracting executable file (Cab-SDK.exe) in the \bin directory of the Internet Client SDK.

There are three ways to package a distribution unit:

Having only the OSD file in the CAB file is the minimal distribution unit possible. The OSD file would indicate the URL of the resource containing the software update in the CODEBASE tag of the OSD file.

The simplest case is to package the OSD file with the program files into the CAB file. In this case, the OSD file does not need a CODEBASE tag in it. When no CODEBASE is given, Internet Explorer automatically looks for the program file in the same CAB file where the OSD file was found.

When multiple program files are involved, and especially when the program files are separated into multiple subdirectories, it is easier to organize the distribution unit by creating a CAB file that contains the OSD file and another CAB file that contains the program files.

Related Topics

For more information on software update channels and OSD, see the following:

Open Software Description (OSD)
Contains more information about OSD and references for all the elements supported by OSD.
Internet Component Download
Contains information on the mechanism that handles the download and installation of software through the Internet.

Up Top of Page
© 1997 Microsoft Corporation. All rights reserved. Terms of Use.