Jump to content

GUIDE: Download Everything Microsoft (MSDBuild v5.5)


Recommended Posts

GUIDE: Download Everything Microsoft

Installing Microsoft Update ActiveX Controls Unattended using MSDBuild

Credits "We all stand on the backs of giants."

Author:
Kenneth R. Alcock (DarkShadows on MSFN.org)

Version:
5.5

Last Updated:
06:30 PM 05/28/2009 (GMT-5 +1 during DST)

Source Materials:
  1. "Inside COM"
    —Dale Rogerson. Microsoft Press ISBN 1-57231-349-8 Excerpted in: "
    "—Microsoft Knowledgebase Q183771

  2. "
    "—Mary Kirtland

  3. Several MSFN Forums threads:

[*]
Special thanks to these specific MSFN members, who helped immensely either in content or clarity:
  • Acheron (hp38guser)

  • RyanVM

  • BoardBabe

  • GeneralMandible

  • Super-Magician

  • ricktendo64

  • hipo_loco

  • Rich_Weiss

Background

There are four Microsoft update web sites. (However, you can only use three of them at once, since Microsoft Update replaces Windows Update.)

  • Windows Update

  • Microsoft Update

  • Office Update

  • Microsoft Update Catalog

When you first browse any of these sites on a fresh Windows XP installation using Internet Explorer, you will be prompted to install and register one or more ActiveX controls before the web site will work, all of which hook into Windows Genuine Advantage (WGA) on Windows XP, ensuring that you are running Genuine Microsoft Software. On retail, upgrade, and OEM Windows XP SKUs, WGA hooks into Windows Product Activation (WPA) to ensure that your Windows XP is legitimately licensed and activated. Office has an additional Genuine Advantage licensing check. There are some Windows updates, which you must install before you can effectively utilize most of these update web sites, or install the updates downloaded from them. And there is an ActiveX control installed with some Office versions that must be authorized to run in Internet Explorer, before the Office Update web site will work.

Objective

To:

Integrate the following into an unattended XPCD for Windows XP SP2/SP3 with Internet Explorer 6, 7, or 8 (either integrated or installed later):
  • Windows Genuine Advantage Validation Tool ActiveX – LegitCheckControl.cab

  • Windows Update Web Control Class ActiveX – wuweb_site.cab

  • Microsoft Update Web Control Class ActiveX – muweb_site.cab

  • MS Update Catalog Web Control Class ActiveX – MUCatalogWebControl.cab

  • Office Genuine Advantage Validation Tool ActiveX – OGAControl.cab

  • Office Update Installation Engine ActiveX – opuc4.cab

  • Windows Installer 4.5 v3 (4.5.6001.22159) Redistributable – KB942288

  • Permanent Copy of the Windows Package Installer - KB898461

  • Windows Genuine Advantage Notifications v1.9.0040.0 - KB905474

  • Windows Update Agent v7.2.6001.788

In a way that:
  • Streamlines downloading the most recent versions of all the ActiveX controls and prerequisite Windows updates directly from Microsoft.

  • Allows one to build an installer (MSDownloads.exe), which will install all of the ActiveX controls during unattended Windows XP installation.

  • Does not require an installation software suite--one only need download the free tools I provide in this guide to create the installer.

  • Uses open-source-like techniques within the installer, allowing anyone with technical knowledge to see, report, and trouble-shoot any issues.

  • Describes the process in technical detail so you are aware what happens.

  • Automates as much of the process as is practical, to reduce human error.

  • Ensures Windows/Microsoft/Office Updates work without further installs.

  • Ensures all Internet Explorer ActiveX controls are not damaged.

  • Handles documented issues with ActiveX registration.

  • Allows one to pre-hide unwanted updates in Windows/Microsoft Update.

  • Creates shortcuts for relative update web sites in the Start Menu.

    menubc2.png

So that:
  • The ActiveX controls are simple to integrate into an XPCD.

  • Installation is as close to supported-by-Microsoft as possible.

  • Users are not prompted to install or run any ActiveX control from any Microsoft updates web site at first boot.

Internet Explorer ActiveX Controls, and Their Setup Information Files

All correctly installed and registered Internet Explorer ActiveX controls are listed by (somewhat) proper name in:
%WinDir%\Downloaded Program Files
. Behind the scenes, the Windows Registry provides this information. If you right-click on any listed add-on and select "Properties" from the context menu, you can get a lot of information about the add-on. The General tab on the Properties dialog lists an item named
Code Base
, which is the URL that brought a downloaded add-on to the PC, and the same URL it will go back to, to check for new versions of any of its files. The Dependency tab will list which files the add-on depends on; almost always one file is an .inf file. Without this .inf file, some properties might be inaccessible, or the add-on may appear listed as "Damaged" in the Downloaded Programs Folder. Damaged add-ons might not update properly.

Updating an ActiveX control add-on automatically downloads the most recent files for it to your PC. The ActiveX control must be correctly registered to facilitate this function. This is why Microsoft ActiveX controls come inside cabinet (.cab) files, which each contain a dynamic link library (.dll) file (the ActiveX control itself), and a Setup Information (.inf) file. Both files usually (but not always) have the same base file name. ActiveX control .inf files use a different structure than those used to install hardware drivers; they tell Internet Explorer how to trigger a proper (re)registration of the .dll, which happens in a blink when you first download the ActiveX control. There is other information in the file as well. But, if you just include the .dll file in your XPCD, registering it from a Windows command line (or script) using regsvr32.exe, you usually do not register the ActiveX control add-on such that it can be updated.

Provided they support updating, properly registered Internet Explorer ActiveX controls can usually be updated semi-automatically by:
  1. From the
    %WinDir%\Downloaded Program Files
    folder in Windows Explorer:

    Right-click the add-on, and select
    Update
    from the context menu.

  2. From
    Internet Explorer 6 - Tools Menu - Manage Addons
    :

    Select the add-on, and click on the Update ActiveX button.

    NOTE:
    Microsoft removed this feature in Internet Explorer 7.

This guide was first written for Windows XP SP2 and IE6. After following that version, IE6 would never prompt users to download and install any of the related ActiveX controls (unless a newer version had been released). However, IE7 uses a different security model for ActiveX controls. So after following this guide, IE7 required each user to authorize each ActiveX control, before allowing the control to run on that user's account (once per-user, per-current-version of that ActiveX control). This lead many readers to believe this guide did not work for Windows XP with IE7, which was not entirely true. Astute observers may have noted that after following this guide, the IE7 Information Bar would say: "This website wants to
run
the following add-on: ...", and not "This website wants to
install
the following add-on: ...". Also, the related context menu item will say: "
Run
ActiveX Control", and not: "
Install
ActiveX Control". If an Administrator account authorized any of the related ActiveX controls and logged out, a second Administrator would still have to authorize the same ActiveX control under his own account. Internet Explorer 7 ActiveX control authorization is a per-user setting. Internet Explorer 8 goes even further, making ActiveX control authorization not only a per-user setting, but per-domain as well.

runactivexjo9.png

Thanks to ricktendo64, MSDownloads.exe (v3.1 and later) adds the correct HKCU registry settings to pre-authorize all of the ActiveX controls in IE7 on a per-user basis. And thanks to Rich_Weiss, MSDownloads.exe (v5.4 and later) adds the correct HKCU registry settings to pre-authorize the ActiveX controls in IE8 for the microsoft.com domain. MSDownloads.exe should be installed from T-12 or T-13, which is a great time to set HKCU registry settings to the Default User Profile, which are then propagated to each new local user account as it is created later.

Methodology

I believe in teaching people to fish, rather than just giving them a fish. However, I also like to automate things that: take substantial time, are repeated often, or that get messy when done manually (like this project). I first started this project as a guide, by bringing together information discussed in several disparate threads on MSFN.org. I also added some more in-depth and up-to-date information that explained in-detail what needed to take place. At first, I provided the .inf files I developed to install the ActiveX control that you could use to create your own installer and then explained a generic process how to create that installer. But this approach generated a lot of manual work for my readers and too many questions. Just keeping every component up-to-date manually can take some real time and effort, and my readers (and even I) are likely to skip or forget something. The required components are a somewhat moving target, since Microsoft often changes the way they are released. A Windows service pack and new Internet Explorer version were released during the evolution of this project, which changed how some components work together. (Microsoft will also release yet another version of Internet Explorer soon.) While Microsoft updates many of this project's components frequently, some key .dlls shared between them are not always updated to the same version in a timely manner. All of this conspires to make a manual process very tedious and error-prone.

I now maintain this project as three interdependent and inseparable parts:
  1. The technical information you are reading now, which discusses where each component needs to be added to your XPCD and why. I have tried to maintain all collective historical knowledge in this article so people understand what takes place and why, as well as have some reference of how things have evolved over time. However, everything is now described in terms of using my automated tools: MSDBuild.exe, MSDownloads.exe, and their component scripts. Scripts are just plain text files, which allows you to review everything and ensure what's being done to your PC.

  2. MSDBuild.exe (MSDownloads.exe Builder). This is a collection of scripts (.cmd, .inf, and .vbs) that I packaged into a WinRar SFX that does all of the work to create your own MSDownloads.exe installer. MSDBuild.exe and MSDownloads.exe are both described in more detail later.

  3. MSDownloads.ulz. This is an update list for Windows Updates Downloader (WUD) written by Jean-Sebastien Carle (JCarle on MSFN.org), which you must use to download everything. Downloading with WUD, helps ensure all components get downloaded: painlessly, efficiently, and to the same folder. Downloading it all manually, increases the likelihood of error.
    NOTE:
    Read
    Issue 02. Languages Other Than English
    , if applicable.

I will not publish my ActiveX control Setup Information files (Inst*.inf), nor will I provide a direct download link to MSDBuild.exe. So don't ask. I am compelling everyone to download everything with WUD for good reasons.

First, if I can avoid it, I don't want to release a new version of this project every time Microsoft changes something minor, which happens every few months. In the past, I manually updated the Setup Information files with each new ActiveX control version to reflect the current version. Now, I no longer create static Inst*.inf files for use in this project. Instead, MSDBuild now starts with Inst*.in_ files, which are not complete, and will not work by themselves. Also, MSDBuild requires the requisite components to be downloaded to the same folder, where it unpacks some of them, and checks inside for the most recent ActiveX control .dll versions to use in your installer. MSDBuild creates each ActiveX control's Setup Information file on-the-fly, based on the date and version of the .dll file used, and it updates the Microsoft .inf file for the ActiveX control accordingly. In order to address
Issue 01
, MSDownloads.exe installer appends correct registry subkey string assignments to the end of each Inst*.inf file during installation; this cannot be done in advance. So the Inst*.inf files are created dynamically and as such cannot be shared by themselves.

Second, there are something like ten Microsoft downloads (plus MSDBuild) that we must download, which are scattered everywhere. I have found the Microsoft static download URLs for most of them, which are reusable URLs that do not change from version to version. All of this information ends up in Windows Updates Downloader via my update list (MSDownloads.ulz), which allows you to download them all at once with a few mouse clicks. Simple.
NOTE:
Read
Issue 02. Languages Other Than English
, if applicable.

Third, most download URLs in my WUD update list (MSDownloads.ulz) are reusable, which means you can just redownload those components whenever Microsoft releases a newer version. Sometimes, I quietly update MSDBuild with minor (mostly cosmetic) changes, without advertising a new version. So always redownload everything, to ensure you are using the most recent version of Microsoft's components and of MSDBuild. In such cases, you need not wait for me to update this guide before building your own up-to-date installer. Just click the WUD checkbox next to the MSDownloads Category, and click the Download button. When redownloading to the same folder, WUD will overwrite all older file versions with the newer ones. Simple.

And finally, some component downloads URLs change. I use free file hosting, so the MSDBuild URL might change between guide versions. Some prerequisite Microsoft updates are downloaded using dynamic URLs, which change from version to version. When something like this changes, I update the guide providing a new update list (MSDownloads.ulz) for WUD. Once WUD has been installed on your engineering PC, keeping up-to-date with this project is much easier. You just click the MSDownloads.ulz link in this article, which will download the newest MSDownloads.ulz version and automatically import it directly into WUD. Afterward, you can immediately redownload all the new requisite components, at once, with just a few mouse clicks in WUD. Simple.

So by forcing everyone to use Windows Updates Downloader, I am actually making people's life easier, not harder (especially mine). Redownloading everything is much quicker, much less hassle, and automated with Windows Updates Downloader. Keeping the download URLs up-to-date is much easier and much less hassle for both you and me. We are both less likely to forget something, and MSDBuild finds everything it is looking for. Simple

How to Download Everything and Create Your MSDownloads.exe Installer

I have streamlined, automated, and documented the process to download all the requisite components from Microsoft and to create your own ActiveX control installer named MSDownloads.exe (discussed in-detail later).

  1. Download
    (WUD) by Jean-Sebastien Carle (JCarle on MSFN.org) from
    and install it.

    WUD is freeware with no ads or spyware, and it won't hurt you. It will make your life a lot easier. Install this first before doing anything!

  2. Click the MSDownloads.ulz download link in this article. This is an update list that will automatically import itself into WUD.

    installedupdatelist.png
    English –

    Spanish –
    (Thanks to: Rodrigo Fernandez hipo_loco on MSFN.org)

  3. In Windows Updates Downloader:


    1. Select the MSDownloads Update List.

    2. Select (and note) your Download Folder location.

      NOTE:
      WUD creates subfolders under this folder, as per options that you set. I suggest an empty folder not used for other purposes.

    3. Click the Show Options button and enable these options:

      • Product as subfolder

      • Category as subfolder

      • Show published dates

      • Show description tooltips

      • Remove unlisted files

        CAUTION:
        Remove unlisted files tells WUD to delete all files not listed in my update list from your download folder (Product subfolder or below if the Product as Subfolder option is enabled). Do NOT store files in the download folder that you want to keep long-term, or they will be deleted the next time you download the components with WUD!

[*]
Check the box next to the MSDownloads category, to select all the downloads. (Expand the category by clicking the "+" in the tree.)

wud.png

[*]
Click Download. WUD downloads all the components in succession.

[*]
OPTIONAL:
Read and follow the
DataStore.edb
section of this guide to obtain a customized copy of DataStore.edb. Copy this file to the MSDownloads downloads folder.

NOTE:
If you do not include your own DataStore.edb file, MSDBuild will use a file I provide, which is named DataStore.ed_.

[*]
Open the MSDownloads download folder, and double-click on MSDBuild.exe, which will extract itself and run MSDBuild.cmd.

NOTE:
MSDBuild.exe and MSDBuild.cmd are discussed in-detail later on.

[*]
MSDBuild.cmd will prompt you to delete the work files. Enter "N", if you wish to customize your MSDownloads.exe installer.

NOTE:
When the MSDBuild.cmd script completes, MSDownloads.exe will exist in the MSDownloads download folder.

[*]
OPTIONAL:
You can customize certain aspects of your installer. To customize your installer:

  1. Copy SFX-MSD.ini

    from:
    the WorkMSDB subfolder

    to:
    the MSDownloads download folder.

  2. Edit your own customized SFX-MSD.ini and save it

    to:
    the MSDownloads download folder.

  3. Re-execute either MSDBuild.cmd or MSDBuild.exe.

MSDBuild will recreate MSDownloads.exe, this time using your version of SFX-MSD.ini from the MSDownloads download folder, which it will copy to the WorkMSDB subfolder (overwriting the one there).

NOTE:
MSDBuild never deletes your SFX-MSD.ini or DataStore.edb files from the MSDownloads download folder (but WUD might--see above).

NOTE:
To reset SFX-MSD.ini back to default values, delete your version from the download folder and restart the process from step 5.

For the most part, the process to create your MSDownloads.exe installer remains the same from version-to-version. Not many download URLs change; some Microsoft updates are downloaded with dynamic URLs, which change from version to version. I use free file hosting, so the MSDBuild download URL might change. When such things change, I update the guide and provide a new update list (MSDownloads.ulz) for WUD. Subscribe to this MSFN discussion thread to ensure that you are notified of any new versions. When I update this guide and release a new MSDBuild version, always do the following:
  1. Read the
    Version History
    , and the related detailed sections for changes.

  2. Re-download MSDownloads.ulz. This update list should automatically import itself into Windows Updates Downloader (overwriting the old one).

    NOTE:
    If you import a new MSDownloads.ulz while WUD is running, you must refresh WUD before it will use the new update list, by clicking the button with the double-green-arrow icon.

  3. Open Windows Updates Downloader and select the MSDownloads Category to force all related files (including my MSDBuild.exe) to be re-downloaded.

  4. Recreate MSDownloads.exe by double-clicking on MSDBuild.exe.

NOTE:
I will not version the Guide or MSDBuild when the only change is that Microsoft has released a new version of a requisite component whose download URL is static and did not change. This process expects you to (re)download everything before (re)building your MSDownloads.exe installer. I will only release new versions when requisite components are added or removed; when dynamic download URLs change, or when I add improvements or bug fixes to MSDBuild.

Include Prerequisite Windows Updates and MSDownload.exe in Your XPCD

Below is a list of Windows updates that you must install first, before you can effectively utilize any of the Microsoft update web sites without them prompting you to install something; or, before you can install the updates downloaded from them. MSDBuild will unpack a few of these updates, in order to ensure it uses the most recent .dll file for a related ActiveX control. Windows Updates Downloader will download all these updates for you, unless you are not using English (see
Issue 02. Languages Other Than English
).

You must correctly integrate (or slipstream) all these Windows updates into your XPCD source. All of the updates support the
discussed in the
. And all but Windows Update Agent support the
or the
methods discussed in the
. If you use a slipstreaming or integration tool (such as nLite) to add these prerequisite Windows updates to your XPCD source, then of course you do not need to add them a second time. However, you should ensure that each update is slipstreamed or integrated before MSDownloads.exe. While it is up to you how to install these updates, this guide will discuss how to integrate them from svcpack.inf. At the end, is a
Sample svcpack.inf File
, which shows where everything should go.

Windows Installer 4.5 v3 (4.5.6001.22159) Redistributable – KB942288

Prerequisite to install the newest Microsoft update and .msi packages.

NOTE:
Windows Installer 4.5 v3 (4.5.6001.22159) Redistributable – KB942288 supersedes Windows Installer 3.1 v2 (3.1.4000.2435) - KB893803--the original prerequisite for Windows XP SP2 (included in SP3).

Knowledgebase:

Integrate into your XPCD with the /INTEGRATE switch. This update adds the KB942288.cat and KB942288.exe entries (see
Sample svcpack.inf File
).

Permanent Copy of Windows Package Installer – KB898461

Prerequisite to install more recent Microsoft updates that do not include the update software as part of the payload.

NOTE:
Microsoft knowledgebase article
states that Windows XP SP3 includes KB898461. However, Windows Update will still list KB898461 as a required update after installing Windows XP SP3.

Knowledgebase:

Integrate into your XPCD with the /INTEGRATE switch. This update adds the KB898461.cat and KB898461.exe entries (see
Sample svcpack.inf File
).

Windows Genuine Advantage Notifications v1.9.0040.0 - KB905474

This guide used to list KB905747 Windows Genuine Advantage Notifications (WGAN) as a prerequisite, then it was made optional, and more recently it was made a prerequisite again. Really, it's up to you. If you don't install WGAN, it will be listed in Windows/Microsoft Update. However, it is not really a requirement for the correct function of Windows or Windows Update. You can always hide KB905747 in Windows/Microsoft Update, but it will be relisted again whenever Microsoft releases a new version, which they seem to be doing much more frequently now.

The reason why WGAN was ever a requirement for MSDownloads.exe has always been where to acquire the current LegitCheckControl.dll (Windows Genuine Advantage Validation Tool). First WGAN had the most recent version, then for a year or more LegitCheckControl.cab had it, then in 2008 WGAN had it again (Guide v4.5), now LegitCheckControl.cab has it again (Guide v5.0). It really becomes a cat-and-mouse game where to acquire the most recent version of LegitCheckControl.dll. MSDBuild now takes the guess work out of this. MSDBuild v4.5 and later will always use the most recent version of LegitCheckControl.dll from any of the following sources:
  • LegitCheckControl.cab

  • KB905747 Windows Genuine Advantage Notifications

  • The System32 folder of the PC you execute MSDBuild on (Windows XP only)

NOTE:
Even if you don't use WGAN, download it so MSDBuild can unpack it!

WARNING:
Some older versions of the KB905747 download will not install on Windows XP SP3, so ensure you download the most recent version!

Knowledgebase:

The current downloaded file is:
WindowsXP-KB905474-
<LANG>
-x86.exe
.

NOTE:
Your language will replace "
<LANG>
". For example, English =
ENU
.

NOTE:
On the KB905474 v1.8.0031.0 download page, Microsoft mentioned that future WGAN updates will be received automatically. Windows Update pushed out KB905474 v1.8.0031.9 shortly afterward. The download page for both updates were the same but the file download URLs changed. I guess Microsoft thought that made things too easy on us, because they just gave the latest version (v1.9.0040.0) a new download page. The download URL for the file has always been dynamic and changes from version to version. Therefore, whenever Microsoft releases a new WGAN version, I will release a new version of my WUD update list (MSDownloads.ulz) with the new dynamic URL. You must then redownload MSDownloads.ulz to update WUD with this new information. If I am behind in updating my WUD list, Use the SearchURL I have provided above to search for the download page of the most current version of WGAN manually.

WGAN KB905474 updates prior to v1.9.0040.0 were IExpress packages that did not support Type I integration or slipstreaming. IExpress packages can be unpacked using: WinRar, 7-Zip, or the command below:

WindowsXP-KB905474-<LANG>-x86-Standalone.exe /C /T:"%FolderPath%"

WGAN KB905474 updates prior to v1.9.0040.0 contained a payload of a single file named
WgaNotifyPackageStandalone.exe
(the inner package), which was a Windows Update package that supported Type I integration and slipstreaming.

WGAN KB905474 updates v1.9.0040.0 and later are actually Windows Update packages, but they still do not support Type I integration or slipstreaming. This is because of the payload executable. Windows Update packages can be unpacked using: WinRar, 7-Zip, or the command below:

WindowsXP-KB905474-<LANG>-x86.exe /U /X:"%FolderPath%"

WGAN KB905474 updates after v1.9.0040.0 contain a payload of three files:
  • wga_eula.txt

  • wganotifypackageinner.exe - the inner package (Windows Update package)

  • wgasetup.exe - prompts to accept EULA before installing inner package.

The inner package, wganotifypackageinner.exe, is a Windows Update package that supports Type I integration and slipstreaming. The outer package for WGAN KB905474 v1.9.0040.0 and later also sets some registry settings before installing the inner package (e.g. to record that the EULA is accepted). Without these registry settings, KB905474 would still be listed in Micrsoft Update. As of MSDBuild v5.5, the InstWGAV.inf Setup Information file sets these registry settings, so that you can integrate the inner package.

Regardless of the update's outer package type (IExpress or Windows Update), it is the payload's inner package that we want. I always extract the inner package, discard the outer package, and rename the inner package the same as the outer package to facilitate my personal integration process--it's much easier to keep track of KB numbers.

NOTE:
MSDBuild automatically takes care of this extraction and renaming for you (overwriting the outer package with the renamed inner package).

NON-ENGLISH:
If you aren't using English, don't download WGAN KB905474 with WUD, instead download the version for your language to the MSDownloads download folder. MSDBuild should be able to unpack any WGAN KB905474 download package correctly. (See
Issue 02
.)

Integrate the renamed inner package into your XPCD with the /INTEGRATE switch. This update adds the
WgaNotify.cat
and
WgaNotify.exe
entries see
Sample svcpack.inf File
).

Windows Update Agent v7.2.6001.788

Prerequisite ensuring the current version of Windows Update is installed.

Knowledgebase:

Static URL for Windows XP 32-bit Pro:

Static URL for Windows XP 64-bit Pro (not supported by MSDbuild):

Copy WindowsUpdateAgent30-x86.exe to your
XPCD\I386\SVCPACK
folder and add an entry for it to svcpack.inf, under the [setupHotfixesToRun] section, and after all the integrated hotfixes (see
Sample svcpack.inf File
).

NOTE:
This guide used to documented extracting WindowsUpdateAgent30-x86.exe, which is a Windows Update package, in order to execute the payload file (WUSetup.exe) silently using the same switches shown in the
Sample svcpack.inf File
. But testing the most recent version has shown that the WindowsUpdateAgent30-x86.exe package will actually accept the parameters and pass them along to WUSetup.exe. Thus, extraction is really not required anymore (if it ever was in the first place).

NON-ENGLISH:
When WindowsUpdateAgent30-x86.exe is extracted, I believe its internal subfolders use the same language abbreviations that are required for the URLs discussed in
Issue 02
below. If you are installing Windows XP in another language, you may want to extract WindowsUpdateAgent30-x86.exe and peek inside to take note of the language abbreviations used. The command below will extract the download to a subfolder of the same name.

WindowsUpdateAgent30-x86.exe /U /X:"%CD%\WindowsUpdateAgent30-x86"

MSDownloads.exe (Microsoft Downloads ActiveX Control Installer)

MSDownloads.exe (Microsoft Downloads ActiveX Control Installer) is a 7-Zip SFX I developed to install all the related ActiveX controls required to run all the Microsoft update web sites. MSDownloads.exe is the final output of executing MSDBuild.exe (discussed in-detail later).

MSDownloads.exe does the following:

  1. Extracts all its files to a subfolder under %TEMP%.

  2. Executes the SFX-MSD.cmd script, via a hidden command console, which:


  3. Ensures Windows XP is running.

  4. Appends the correct Module Usage registry key string assignments to the end of each Setup information (Inst*.inf) script, which must be done at installation to account for any customized Windows folder name or system drive letter. (See
    Issue 01
    for more details.)

  5. Checks for all required Setup information (Inst*.inf) scripts required for each ActiveX control (some are dependent on others).

  6. Installs all Setup information (Inst*.inf) scripts for each update web site specified in SFX-MSD.ini whose requirements have been met (Windows Update is mandatory). Each Setup Information script will:
    • Copy the ActiveX control's files to the correct folders.

    • Properly register the ActiveX control.

    • Properly register the Add-On in Internet Explorer.

    • Properly register all interfaces between the ActiveX control and any other ActiveX control that it relies on.

    • Add HKCU registry settings, suppressing Internet Explorer from prompting the user to authorize and run the ActiveX control.

    • Create Start Menu shortcuts (directly in Start Menu), if required.




Deletes its subfolder under %TEMP% after installation completes.


Here's how to add MSDownloads.exe to your XPCD (use A or B, not both):

  1. From SVCPack (T-13):


  2. Copy MSDownloads.exe to XPCD Source\I386\SVCPACK.

  3. Add a MSDownloads.exe entry to XPCD Source\I386\svcpack.inf, under the [setupHotfixesToRun] section, and after all the other entries discussed in this guide (see
    Sample svcpack.inf File
    ).


From CmdLines.txt (T-12):
  1. Copy MSDownloads.exe to XPCD Source\$OEM$

  2. Add a MSDownloads.exe entry to XPCD Source\$OEM$\cmdlines.txt.

NOTE:
MSDownloads.exe cannot be installed from RunOnceEx, or if Windows XP is up and running, unless you stop the Automatic Updates Service, which locks DataStore.edb (the Windows Update database file). You must also ensure the service is restarted afterward.

Sample svcpack.inf File

Once everything is added, your svcpack.inf should look something like this:


KBnnnnnn.cat

KB942288.cat <---------------------------------------- added by /INTEGRATE

KB898461.cat <---------------------------------------- added by /INTEGRATE

WgaNotify.cat <---------------------------------------- added by /INTEGRATE

...

KBnnnnnn.cat

[SetupHotfixesToRun]

KBnnnnnn.exe /q /n /z

KB942288.exe /q /n /z <------------------------------- added by /INTEGRATE

KB898461.exe /q /n /z <------------------------------- added by /INTEGRATE

WgaNotify.exe /q /n /z <------------------------------- added by /INTEGRATE

...

KBnnnnnn.exe /q /n /z

WindowsUpdateAgent30-x86.exe /wuforce /quiet /norestart <--manually added

QChain.exe <--manually added

MSDownloads.exe <--manually added
[ProductCatalogsToInstall]

NOTE:
Other, unrelated Windows updates are shown as "KBnnnnnn" and "..." above. The "/q /n /z" switches added to each .exe are the result of using the /INTEGRATE switch to integrate those Windows updates.

ActiveX Control Technical Reference

The next few sections are for technical reference and document the following aspects of each ActiveX control:
  • What the ActiveX control is and which update web sites utilize it.

  • Which downloaded cabinet file contains the ActiveX control.

  • What URL downloads the ActiveX control's cabinet (watch word wrapping).

  • Which related Windows Updates contain the ActiveX control's .dll.

  • What files are included with the ActiveX control.

  • Which Setup Information script (Inst*.inf) MSDownloads.exe will use to install the ActiveX control.

  • What shortcuts are created for the related web site (if any).

    NOTE:
    Shortcuts are created directly in the Start Menu (All Users).

  • Any pertinent or historical information about the ActiveX control.

While Windows Updates Downloader automatically downloads each ActiveX control's cabinet file for you, you can still download each manually. Just paste the URL directly into the Internet Explorer address field and press
<Enter>
. This will cause the cabinet file to download and open in Windows Explorer, from which you may extract the files inside, by click-dragging them and dropping them into another destination folder.

Windows Genuine Advantage Validation Tool (ActiveX)

This ActiveX control validates that you are using a genuine and activated Windows XP license. All four Microsoft update web sites require that this ActiveX control is correctly installed, and that Windows XP is activated (Retail, Upgrade, and OEM license SKUs only), before you may use the site.
  • Windows Update

  • Microsoft Update

  • Office Update

  • Microsoft Update Catalog

Cabinet File:
LegitCheckControl.cab

Static URL:

Windows Update:
Windows Genuine Advantage Notifications - KB905474

Script:
InstWGAV.inf

Shortcut:
None


---------------------------------------------------------------------------

LegitCheckControl.dll %WinDir%\System32

LegitCheckControl.inf %WinDir%\Downloaded Program Files
Files: Destination Folder

NOTE:
Older versions of the Windows Genuine Advantage Validation Tool also included the file GWFSPIDGen.dll, which has been deprecated and is no longer included with the newer versions of this tool.

Microsoft releases new versions of LegitCheckControl.dll about a few times each year. Almost always, LegitCheckControl.cab contains the most current version of LegitCheckControl.dll. However, whenever Microsoft releases a new version of Windows Genuine Advantage Notifications - KB905474, that update is more likely to contain the most current version, at least until Microsoft gets around to updating LegitCheckControl.cab (which they are often slow at doing). Therefore, you should always (re)download both the cabinet and WGAN with Windows Updates Downloader. MSDBuild inspects the file versions of LegitCheckControl.dll inside both the cabinet and WGAN (and in your System32 folder if running on Windows XP), and always uses the most recent version inside your MSDownload.exe installer.

Windows Update Web Control Class (ActiveX)

This ActiveX control permits you to download updates and add-ons from:
  • Windows Update

  • Microsoft Update

Cabinet File:
wuweb_site.cab

Static URL:

Windows Update:
Windows Update Agent

Script:
InstWUWC.inf

Shortcut:
None--by default, Windows XP already includes a shortcut.


---------------------------------------------------------------------------

wuweb.dll %WinDir%\System32

wuweb.inf %WinDir%\Downloaded Program Files

wuweb.cat * Not installed by InstWUWC.inf
Files: Destination Folder

NOTE:
InstWUWC.inf does nothing explicitly with wuweb.cat. I'm not sure how to install .cat files from a Setup Information file. Still, wuweb.cat is included inside MSDownloads.exe. I test extensively and everything always works, so I wouldn't really worry about this too much.

Usually, Microsoft keeps the version of wuweb.dll in lock-step with that of muweb.dll (Microsoft Update Web Control Class), updating both about once a year, at the same time they release a new version of Windows Update Agent (WUA). Almost always, wuweb_site.cab contains the most current version of wuweb.dll. However, whenever Microsoft releases a new versions of WUA, that update is more likely to contain the most current version, at least until Microsoft gets around to updating wuweb_site.cab (which they are often slow at doing). Therefore, you should always (re)download both the cabinet and WUA with Windows Updates Downloader. MSDBuild inspects the file versions of wuweb.dll inside both the cabinet and WUA (and in your System32 folder if running on Windows XP), and always uses the most recent version inside your MSDownload.exe installer.

Microsoft Update Web Control Class (ActiveX)

This ActiveX control permits you to download updates and add-ons from:
  • Microsoft Update

Cabinet File:
muweb_site.cab

Static URL:

Windows Update:
None

Script:
InstMUWC.inf

Shortcut:
Adds Microsoft Update and removes Windows Update. (After installing the Microsoft Update Web Control Class, the Windows Update shortcut would end up taking you to the Microsoft Update web site instead of Windows Update.)


---------------------------------------------------------------------------

muweb.dll %WinDir%\System32

muweb.inf %WinDir%\Downloaded Program Files

muweb.cat * Not installed by InstMUWC.inf

DataStore.edb * %WinDir%\SoftwareDistribution\DataStore
Files: Destination Folder

NOTE:
InstMUWC.inf does nothing explicitly with muweb.cat. I'm not sure how to install .cat files from a Setup Information file. Still, muweb.cat is included inside MSDownloads.exe. I test extensively and everything always works, so I wouldn't really worry about this too much.

NOTE:
DataStore.edb is not part of the ActiveX control downloaded from Microsoft. Read the
DataStore.edb
section for more information.

Usually, Microsoft keeps the muweb.dll version in lock-step with that of wuweb.dll (Windows Update Web Control Class), updating both about once a year, at the same time they release a new version of Windows Update Agent (WUA). But unlike wuweb.dll, there is currently no known Windows Update that contains muweb.dll. Still, some MSDBuild users have reported seeing a newer version of muweb.dll in their System32 folder than was contained in the latest muweb_site.cab available at the same time. Therefore, MSDBuild inspects the file versions of muweb.dll inside both the cabinet and in your System32 folder (if running on Windows XP), and always uses the most recent version inside your MSDownload.exe installer.

Microsoft Update Catalog Web Control Class (ActiveX)

This ActiveX control permits you to download updates and add-ons from:
  • Microsoft Update Catalog

Microsoft Update Catalog is a great place to download multiple updates at one time, including updates for more than one Windows version or language, or even more than one version for some updates.

Cabinet File:
MuCatalogWebControl.cab

Static URL:

Windows Update:
None

Script:
InstMCWC.inf

Shortcut:
Adds Microsoft Update Catalog


---------------------------------------------------------------------------

MicrosoftUpdateCatalogWebControl.dll %WinDir%\System32

MicrosoftUpdateCatalogWebControl.inf %WinDir%\Downloaded Program Files
Files: Destination Folder

There is nothing out of the ordinary for this ActiveX control.

Office Genuine Advantage Validation Tool (ActiveX)

This ActiveX control validates that you are using a genuine and activated Microsoft Office license. The Office Update Installation Engine ActiveX control hooks into this ActiveX control, affecting:
  • Office Update

Cabinet File:
OGAControl.cab

Static URL:

Windows Update:
None

Script:
InstOGAV.inf

Shortcut:
None


---------------------------------------------------------------------------

OGACheckControl.dll %WinDir%\System32

OGAControl.inf %WinDir%\Downloaded Program Files
Files: Destination Folder

Some versions of Microsoft Office install another ActiveX control, named Authzax.dll. The Office Update web site will attempt to invoke Authzax.dll, which in Internet Explorer 7 or later results in prompting the user to authorize the ActiveX control. As of MSDBuild v5.0, InstOGAV.inf now adds an HKCU registry setting which suppresses Internet Explorer from prompting the user to authorize and run Authzax.dll.

Office Update Installation Engine (ActiveX)

This ActiveX control permits you to download updates and add-ons from:
  • Office Update

Cabinet File:
opuc4.cab

Static URL:

Windows Update:
None

Script:
InstOUIE.inf

Shortcut:
Adds Microsoft Office Update


---------------------------------------------------------------------------

Office.ico * %WinDir%

OPUC.dll %WinDir%

OPUC.inf %WinDir%\Downloaded Program Files
Files: Destination Folder

NOTE:
Office.ico is not part of the ActiveX control downloaded from Microsoft. It is used as the icon for the Start Menu Shortcut.

DataStore.edb

DataStore.edb is not actually part of any ActiveX control downloaded from Microsoft. Rather, this is a Windows database file that stores all of the Windows and Microsoft updates you have: hidden, downloaded, or installed; and, it also stores if you are using Windows Update or Microsoft Update. When we install the Microsoft Update Web Control Class ActiveX control, we must also install a copy of DataStore.edb that has been pre-configured for use with Microsoft Update. During installation, InstMUWC.inf will attempt to copy DataStore.edb to %WinDir%\SoftwareDistribution\DataStore, and will error out if DataStore.edb is not found. Therefore, MSDBuild automatically includes a copy named DataStore.ed_, which is used if you do not provide your own customized copy of DataStore.edb. DataStore.ed_ is configured to use Microsoft Update and hides the update for Windows Messenger v4.7 (now superseded by a more recent version of Windows Messenger).

We use DataStore.edb to help accomplish two things:

  1. Ensure the Windows XP installation uses Microsoft Update from the start.

  2. Hide any updates we wish to exclude from Windows/Microsoft Update.

  1. On your engineering PC, slipstream or integrate all the updates you wish to include into your XPCD.

  2. Install this XPCD onto a clean VirtualPC or TestPC.

  3. In the clean Windows XP installation, run Windows Update.

  4. From the Windows Update web site, manually install Microsoft Update, as well as any of the requisite ActiveX Controls or Windows Updates that you are explicitly prompted to install (reboot only if forced to).

  5. Progress through Microsoft Update to the scan screen (Express/Custom)

  6. Perform a Custom system scan.

  7. Hide any update that you wish to exclude from Windows or Microsoft Update (Say for example Windows Messenger v4.7).

  8. Close Internet Explorer.

  9. Right-click on
    My Computer
    and select
    Manage
    from the context menu.

  10. In
    Computer Management
    , open
    Services and Application - Services
    .

  11. Right-click on the
    Automatic Updates Service
    and select
    Stop
    . (This ensures the file is no longer locked so it can be copied.)

  12. Open Windows Explorer to %WinDir%\SoftwareDistribution\DataStore.

  13. Copy
    DataStore.edb
    to your MSDownloads folder on your engineering PC.

NOTE:
If you want the smallest file possible (which hides nothing), skip steps 6 and 7 from the process above.

NOTE:
Don't play around in Windows Update too much, or DataStore.edb will grow larger. The smaller it is, the smaller your installer will be.

MSDBuild.exe (Microsoft Downloads Installer Builder)

MSDBuild.exe (MSDownloads.exe ActiveX Installer Builder) is a WinRar SFX I developed containing a collection of scripts (.cmd, .inf, and .vbs) that automates creating an ActiveX control installer named MSDownloads.exe (discussed in-detail earlier), from the requisite components downloaded from Microsoft. MSDBuild.exe will do the following:

  1. Unpack the following files to the MSDownloads download folder:

    • MSDBuild.cmd
      – MSDownloads.exe Builder Script

    • Readme.txt
      – This content you are reading now in printable format.

[*]
Unpack all the 7-Zip command line files to
MSDownloads\7za465
.

  • 7za.exe

  • 7-Zip.chm

  • 7-Zip Command Line License.txt

  • 7-Zip Command Line ReadMe.txt

  • 7-Zip Extra History.txt

  • 7-Zip Extra License.txt

  • 7-Zip Extra ReadMe.txt

  • 7-Zip For Installers ReadMe.txt

  • 7zS.sfx

  • Copying.txt

    NOTE:
    MSDBuild.cmd writes temporary VBScript (.vbs) files here.

[*]
Unpack all MSDownloads.exe installation files to
MSDownloads\WorkMSDB
.

  • DataStore.ed_
    – DataStore.edb (used if you do not provide your own).

  • hidec.exe
    – Tiny executable that hides the Windows Command Prompt.

  • InstMCWC.in_
    – * Installs Microsoft Catalog Web Control

  • InstMUWC.in_
    – * Installs Microsoft Update Web Control

  • InstOGAV.in_
    – * Installs Office Genuine Advantage Validation Tool

  • InstOUIE.in_
    – * Installs Office Update Installation Engine

  • InstWGAV.in_
    – * Installs Windows Genuine Advantage Validation Tool

  • InstWUWC.in_
    – * Installs Windows Update Web Control

  • Office.ico
    – Microsoft Office Icon file

  • SFX-MSD.cmd
    – Launches Inst*.inf installations in MSDownloads.exe.

  • SFX-MSD.ini
    – Governs a few installer parameters.

    NOTE:
    The Inst*.in_ files will not work correctly as Setup Information (.inf) files. (Read the
    Methodology
    section for more details.)

[*]
Check the MSDownloads download folder for SFX-MSD.ini (your file); if one is found, copy it to the WorkMSDB subfolder.

[*]
Check the MSDownloads download folder for DataStore.edb (your file); if one is found, copy it to the WorkMSDB subfolder.

[*]
Extract all downloaded Microsoft .cab files to
MSDownloads\WorkMSDB
.

NOTE:
The ActiveX Control sections list which files each .cab contains.

[*]
For Windows Genuine Advantage Notifications - KB905474:

  1. Extract payload from download (either WgaNotifyPackageStandalone.exe or wganotifypackageinner.exe).

  2. Delete download (WindowsXP-KB905474-<LANG>-x86.exe).

  3. Rename the payload the same as the download.

    NOTE:
    Read the
    Windows Genuine Advantage Notifications
    section.

[*]
For each ActiveX control's .dll file:

  1. Extract any related Windows update containing the ActiveX control's .dll to a temporary subfolder named after the Windows update.

    Currently, this step only applies only to:

    • LegitCheckControl.dll (WGA Notifications)

    • wuweb.dll (Windows Update Agent)

[*]
Compares the .dll file versions (A or B, not both).
  1. Only when executed on Windows XP: Compare the versions of the .dll files in: the cabinet file, the related Windows Update, and either the
    %WinDir%\System32
    or
    %WinDir%\System32
    folder as appropriate for the .dll.

  2. Only when not executed on Windows XP: Compare the versions of the .dll files in: the cabinet file or the related Windows Update.

[*]
Copy the most recent version of the .dll to
MSDownloads\WorkMSDB
.

[*]
Append date and version information of the copied .dll file to the related Inst*.in_ file, which creates the related Inst*.inf file.

NOTE:
Inst*.inf files are not in a working state at this point, since SFX-MSD.cmd must append system paths to them (see
Issue 01
).

[*]
Modify the Microsoft .inf file that came with the cabinet .dll file to include the correct version information of the retained .dll file.

[*]
Delete the temporary subfolder of any extracted Windows update.

[*]
Create MSDownloads.exe in the MSDownloads download folder.

[*]
Prompt to delete from the MSDownloads download folder:

  • 7za465 subfolder

  • WorkMSDB subfolder

  • MSDBuild.cmd

  • Readme.txt

[*]
Open the MSDBuild.log file in Notepad.

Issue Log

There are a couple issues to be aware of. MSDBuild resolves one of them.

Issue 01. ModuleUsage subkeys Hard-Coded to C:/Windows/System32

Proper registration for .dlls requires registry subkeys under this key:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ModuleUsage\_

So we should end up with subkeys like these:


_C:/WINDOWS/system32/LegitCheckControl.DLL]

_C:/WINDOWS/system32/wuweb.dll]

_C:/WINDOWS/system32/muweb.dll]

_C:/WINDOWS/system32/OGACheckControl.DLL]
_C:/WINDOWS/OPUC.DLL]

NOTE:
The "_" above is a line continuation and only shows where and how each subkey connects to the parent key.

The issue is that the subkeys above all require slashes "/", and cannot use backslashes "\" (Registry key names can never use backslashes). So when the .inf files create these subkeys, they must be hard-coded, since all DirIDs use backslashes, and there is no programmatic way (inside the .inf file) to create this value based on paths on the system. (Using the System Drive DirID results in creating an intermediate registry key).

IMPACT:

This issue will impact you, if you:

  • Changed your System Drive letter to something other than "C:"

  • Renamed your Windows folder to something other than "Windows"

  • Renamed your System32 subfolder to something other than "System32".

THIS ISSUE WAS RESOLVED AS OF MSDBUILD v1.5:

I modified SFX-MSD.cmd to address this issue. SFX-MSD.cmd appends a string assignment to the bottom of each Setup Information (Inst*.inf) file, which defines System32Key (or WinDirKey) equal to the front-slashed-path of the System32 (or Windows) folder. This can only be done during installation, since these paths may vary from system to system.

IMPORTANT:
All Inst*.inf files are broken, until SFX-MSD.cmd appends to them, which takes place during MSDownloads.exe installation!

Issue 02. Languages Other Than English

IMPACT:

This issue impacts you if you use a language other than English.

WORKAROUND:

  1. Find the language-specific download URLs for your language.

    Unfortunately, my Windows Updates Downloader update list (MSDownloads.ulz) only handles English language downloads for some requisite components (but most of them are not language-specific). So start by downloading everything with WUD. Then you will only need download a few files manually. (You can also edit your own WUD update list, which is not very difficult.)

    You could try changing the "/en/" language abbreviation in the Code Base URLs for the cabinet (.cab) file of each ActiveX control listed below to your language abbreviation. You may find your language abbreviation inside the Windows Update Agent download (see that section for details). Or, you can copy the URLs from a Windows XP PC already installed in your language, with the ActiveX Controls manually installed by doing this:

    • List the
      %WinDir%\Downloaded Program Files
      folder in Windows Explorer.

    • Right-click on the ActiveX Control, and select
      Properties
      .

    • From the
      General
      tab, copy the
      Code Base
      url.

      You can start from either end and select-drag your mouse (or hold down the shift key and use the cursor keys) to select all the way to the other end. The very long URLs will scroll so you can copy them.

NOTE:
MSDBuild should have no trouble extracting the .cab files for these three ActiveX controls, so long as they use the same file names as the English versions.

You must also find the Windows Genuine Advantage Notifications - KB905474 download URL, which is language-specific. See the KB905474 article.

NOTE:
MSDBuild should have no trouble extracting the KB905474 payload and the .dll inside it, regardless of its file name. That is, so long as you use the original file name as downloaded from Microsoft.

NOTE:
I believe all other downloads are language-neutral. However, I have only researched and tested English language installations.

[*]
Find the Office Update URL for your language.

As noted below, the Office Update web site URL is also language-specific. You need not worry about the Microsoft Update web site, which is actually launched by a function call to muweb.dll and not by a URL. You also need not worry about Windows Update, whose shortcut is installed with Windows XP (and removed when you install Microsoft Update).

[*]
Edit SFX-MSD.ini to customize for you language.

The three Code Base URLs listed below are used as registry settings inside the Setup Information (Inst*.inf) scripts I created for the related ActiveX controls. And the Office Update web site URL is used as a shortcut inside the Setup Information script for its related ActiveX control. Once you find the correct URLs for your language, edit the listed values inside of SFX-MSD.ini to ensure your installer correctly supports your language.


---------------------------------------------------------------------------

Windows Update Web Control Class WUWC_CAB 1

Microsoft Update Web Control Class MUWC_CAB 2

Microsoft Update Catalog Web Control Class MCWC_CAB 3

Office Update Installation Engine (Site) OUIE_URL 4 *
ActiveX Control SFX-MSD.ini Default URL#


---------------------------------------------------------------------------

1 http://update.microsoft.com/windowsupdate/v6/V5Controls/en/x86/client/wuweb_site.cab

2 http://update.microsoft.com/microsoftupdate/v6/V5Controls/en/x86/client/muweb_site.cab

3 http://catalog.update.microsoft.com/v7/site/ClientControl/en/x86/MuCatalogWebControl.cab

4 http://office.microsoft.com/en-us/downloads/maincatalog.aspx
Default URLs (Language = English-United States):

The Setup Information scripts for three of the ActiveX controls listed above also create shortcuts in the Start Menu. By default, they all use English names and infotips. Edit the Shortcut and InfoTip values inside SFX-MSD.ini to ensure your installer correctly supports your language.


---------------------------------------------------------------------------

Microsoft Update MUWC_Shortcut MUWC_InfoTip

Microsoft Update Catalog MCWC_Shortcut MCWC_InfoTip

Office Update OUIE_Shortcut OUIE_InfoTip
Default (English-US) Shortcut Name Shortcut value InfoTip value

[*]
Test, Test, Test.

I believe everything else should work for you. But test carefully (ideally inside VirtualPC), since I have only researched and tested English language installations. Please report any errors, and I'll try to ensure my scripts can handle other languages.

[*]
Share.

Once you have tested your language successfully, post the download and site URLs to the discussion thread. Also, try taking a stab at translating the MSDownlads.ulz into your language. (Files ending with .ulz are just .zip files, and the .ul file inside is just a plain text XML file.)

This is the best advice I can offer to break the language barrier.

Version History

  • v5.5 - 2009-05-28 Current Version
    • Updated the InstWGAV.inf Setup Information script to set registry entires that accept the WGAN EULA and set some other registry values. Otherwise, Microsoft Update still listed KB905474 after the inner package was integrated and installed.

    [*] v5.4 - 2009-05-22

    • Updated all Setup Information (.inf) scripts to pre-authorize the microsoft.com domain for use with IE8.

    [*] v5.3 - 2009-03-27

    • Updated Windows Genuine Advantage Notifications to v1.9.0040.0.
    • Updated :WGAN subroutine in MSDBuild.cmd to handle new packaging.
    • Updated WGAN sections in: Guide, Readme.txt, and MSDownloads.ulz.
    • Añadido una lista para Descargarador de Actualizaciónes de Windows (WUD), se llama: MSDownloadsESN.ulz (Gracias a hipo_loco).

    [*] v5.2 - 2009-03-24

    • Fixed a reported issue where MSDBuild.cmd and SFX-MSD.cmd would check the Windows version by searching for strings like: "Version 5.1", "Version 6.0", etc. Apparently, Microsoft changes the word "Version" in some language variants of Windows, which is "Versi¢n 5.1" in Spanish Windows XP. Both Scripts now search for: " 5.1", " 6.0", etc. (note the preceding space). Hopefully, this preempts any possible issues with other non-English-language variant of Windows.
    • Updated MSDBuild.cmd to open .log file with focus, even on Vista+.
    • MSDBuild now uses 7-Zip v4.65.
    • Other minor script, guide, and Readme.txt changes.

    [*] v5.1 - 2009-02-20

    • Fixed a reported bug where MSDBuild no longer supported a download folder path containing spaces in name. The following characters are still not supported in folder names: "<, >, (, ), %, ^, |, *, \, !".
    • MSDBuild.cmd now checks if KB905474 WGAN file in the download folder requires extraction or not (no more WGANotify Setup dialogs).
    • Other minor script, guide, and Readme.txt changes.

    [*] v5.0 - 2009-02-16

    • Major guide rewrite, worth re-reading (hopefully it is more clear).
    • Added MSDownloads.exe installer customization through SFX-MSD.ini, a new file whose supported settings are documented internally. Both MSDBuild.cmd and SFX-MSD.cmd now read settings from SFX-MSD.ini.
    • MSDBuild.cmd now uses the most recent .dll for each ActiveX control from: the cabinet file; the Windows update, or the System32 folder. Read the ActiveX Control Technical Reference for details.
    • Updated InstOGAV.inf to suppress authorization of Authzax.dll. Read the Office Genuine Advantage Validation Tool section for details.
    • MSDBuild.exe no longer includes complete Setup Information files (Inst*.inf). Read the Methodology section for details.
    • MSDBuild.exe now extracts DataStore.ed_ to the WorkMSDB subfolder.
    • Fixed a reported bug where SFX-MSD.cmd actually launched the .inf to install Microsoft Update Web Control in place of the one to install Microsoft Update Catalog Web Control (and vice versa). (This bug was always negated if your installer included both controls.)
    • Various other minor bug fixes and improvements to all scripts.

    [*] v4.5 - 2008-11-26

    • Updated Windows Update Agent to v7.2.6001.788.
    • Added static download URLs for Windows Update Agent.
    • Removed extract.exe. MSDBuild now unpacks .cab files with 7-Zip.
    • Re-wrote Cleanup subroutine.
    • LegitCheckControl.dll: MSDBuild will now use the most recent version from LegitCheckControl.cab or WGA Notifications.
      Replaced InstWGAV.inf with InstWGAV.in_ inside MSDBuild.exe.
      MSDBuild.cmd now creates InstWGAV.inf by adding the correct module version and date stamp to InstWGAV.in_. MSDBuild.cmd updates LegitCheckControl.inf with correct version.
    • wuweb.dll: MSDBuild.cmd will now use the most recent version from either wuweb_site.cab or Window Update Agent.
      Replaced InstWUWC.inf with InstWUWC.in_ inside MSDBuild.exe. MSDBuild.cmd now creates InstWUWC.inf by adding the correct module version and date stamp to InstWUWC.in_. MSDBuild.cmd updates wuweb.inf with correct version.
      NOTE: Module dates and times do not factor in DST yet.
      NOTE: You still download wuweb_site.cab and LegitCheckControl.cab!

    [*] v4.1 - 2008-09-25

    • Updated InstOUIE.inf (Office Update Installation Engine) to v12.0.5580.1000 (Tue, 26 Aug 2008 05:04:10 GMT).
    • Updated Windows Genuine Advantage Notifications to v1.8.0031.9.
    • Re-organized Guide to better highlight automated section and manual process. (Some readers were confused with automated process first.)
    • MSDBuild.exe now extracts Readme.txt to download folder instead of the WORK subfolder. (However, it is still deleted with WORK files.)

    [*] v4.0 - 2008-08-31

    • Updated Windows Update Agent section of the guide (again). I just noticed that the newest version of the download from Microsoft will
      actually accept silent installation switches. (That is, the outer shrinkwrap executable passes all command parameters to WUSetup.exe.)
    • Updated Windows Genuine Advantage Notifications to v1.8.0031.0.
    • Updated Windows Genuine Advantage Notifications section of the guide.
    • Updated MSDBuild.cmd to extract payload from the Microsoft download for KB905474 Windows Genuine Advantage Notifications (which is an IExpress package). MSDBuild.cmd extracts the payload, deletes the downloaded file, and renames the payload the same as the download. The extracted package can be then be integrated using /INTEGRATE.
    • Updated MSDBuild.exe to include 7-Zip command line version.
    • Updated MSDBuild.cmd to use 7-Zip command line version instead of WinRar. (Installing WinRar is no longer required.)

    [*] v3.2 - 2008-08-29

    • Updated Windows Update Agent to v7.2.6001.784.
    • Updated Windows Update Agent section of the guide.
    • Updated InstMUWC.inf (Microsoft Update Web Control Class) to v7.2.6001.784 (Sat, 19 Jul 2008 09:55:57 GMT).
    • Updated InstWUWC.inf (Windows Update Web Control Class) to v7.2.6001.784 (Sat, 19 Jul 2008 09:52:07 GMT).
    • Updated InstOUIE.inf (Office Update Installation Engine) to v12.0.5575.1000 (Tue, 22 Jul 2008 06:59:52 GMT).

    [*] v3.1 - 2008-07-19

    • Updated all Inst*.inf files to suppress per-user authorization of ActiveX controls in IE7. A big thanks to ricktendo64 for this!
    • InstMUWC.inf (Microsoft Update Web Control) now removes the Windows Update Start Menu shortcut. (After switching to Microsoft Update,
      the Windows Update shortcut points to Microsoft Update anyway.)

    [*] v3.0 - 2008-07-18

    • Updated LegitCheckControl.cab (KB892130) to v1.7.69.2.
    • InstWGAV.inf properly registers LegitCheckControl.dll without requiring Windows Genuine Advantage Notifications - KB905474.
    • Updated OGAControl.cab to v1.6.28.0.
    • Updated opuc4.cab to v12.0.5561.1000.
    • Replaced Windows Installer 3.1 v2 (3.1.4000.2435) - KB893803 with: Windows Installer 4.5 v3 (4.5.6001.22159) – KB942288
    • Created MSDownloads.ulz Windows Updates Downloader file to help download all required files.
    • Created MSDBuild.exe and MSDBuild.cmd script to automate creation of MSDownloads.exe.

    [*] v2.5 - 2008-01-17

    • Added KB898461 as a required Windows Update.
      NOTE: Readme.txt in download was not updated for this version.

    [*] v2.2 - 2007-12-21

    • More Readme.txt revisions (clearer svcpack.inf examples).
    • Fixed missing hidec.exe noted in v2.1 attachment.

    [*] v2.1 - 2007-12-15 - Minor grammar and spelling corrections in Readme.txt.

    [*] v2.0 - 2007-12-15 - First version published on MSFN.org.

    [*] v1.5 - 2007-12-01 - SFX-MSD.cmd now appends System32 Key strings to Inst*.inf files on-the-fly during installation (Issue 01 Resolved).

    [*] v1.0 - 2007-11-25 - Inst*.inf files require manual editing of System32 Key strings (Issue 01 Identified).

IMPORTANT: Please stop reading now! Everything you need is fully contained in this first post, which I keep up-to-date with each new version. Post any issues or questions to the end of this thread. When posting issues, please include MSDBuild.log as a file attachment.

Edited by DarkShadows
Link to comment
Share on other sites


Anything that integrates as a Type I hotfix (with the /INTEGRATE switch) will automatically include it's .cat file in the SVCPACK folder and svcpack.inf file. I researched the manual installation of all ActiveX controls on a Virtual PC (i.e. install Windows and then let IE download each ActiveX control). As far as I could tell, those .cat files never show up anywhere after the ActiveX control is installed. It's as if they are not even used. In fact, only two of the ActiveX Control .cab files even contain .cat files. So I really have no idea where they are supposed to go. Perhaps they are just referenced from the cab when the other files are installed? This is why I recommend copying them to your WORK folder and including them in your SFX. But if anyone has any ideas on where they should be copied, then I can edit my Inst*.inf files accordingly.

BTW, I've done some pretty exhaustive testing on the process above and built a few PCs with it by now, including:

  • Windows XP Home OEM
  • Windows XP Home Retail Upgrade
  • Windows XP Pro Volume
  • Windows XP Pro OEM

All have worked for me without issue. Although, from time-to-time we need to re-download some things, because Microsoft will constantly update them.

Link to comment
Share on other sites

hidec.exe is missing in the download.

Ah, so it is; I'm sorry about that folks! Thanks for pointing this out! I quietly updated the ReadMe.txt file inside MSDownloads.zip very shortly after my first post. And, I simply forgot to select hidec.exe when I made the new MSDownloads.zip! :blushing: Over 65 people downloaded the version missing hidec.exe and only one person pointed it out!

The first post has now been updated with clearer svcpack.inf examples, and a new copy of MSDownloads.zip that includes hidec.exe.

Link to comment
Share on other sites

Is it possible to have a single addon that contains all of these items and be easily updated simply by replacing the files inside a .rar addon?

Unless I have misunderstood your question, I do not believe it is worth the effort required to make one huge WinRar SFX. Now let me explain why I say that. If you follow my guide exactly as written, you end up with four products:

  1. KB893803.exe
  2. KB905474.exe (WGANOT~1.exe)
  3. WindowsUpdateAgent.exe (a WinRar SFX)
  4. MSDownloads.exe (a WinRar SFX)

It really makes no sense to do more work on the first two products. More-less, they are just like any other Windows Update. The downloaded KB905474.exe file must be first be extracted to get at the WGANOT~1.exe, but afterward it can easily be integrated just like any other Windows Update (I rename WGANOT~1.exe back to KB905474.exe). More than likely, most people will already have some process by which they already integrate Windows Updates into an XPCD (nLite, XPCREATE, HFSLIP, your own script, etc.). So just plug these two files into that process. It makes little sense to rip these two products apart further just to try to add them to one huge WinRar SFX. I list these two items in this guide, simply because the other products require them in order to work.

You might be able to combine WindowsUpdateAgent.exe (a WinRar SFX) with MSDownloads.exe (a WinRar SFX). What troubles me with this idea is that both Windows Update Agent and WUWebControl Class (Windows Update Web ActiveX Control) include wuweb.dll. Right now, these two files have the same version, but each has a different time stamp and MD5 Checksum. And as time goes on, Microsoft is very likely to update the copy of wuweb.dll downloaded with the ActiveX control .cab file, but they might not update the Windows Update Agent download at all. Or, Microsoft may even release a whole new version of Windows Update Agent. I'm also not so sure that WUSetup.exe won't choke on an updated wuweb.dll file in the future. So again it is more work, and more risk, for very little value added.

I will not update the guide above, as I see little value added, and more risk. But , for those die hards still interested combining the two, follow the Guide above as written, except as amended below.

Integrate Windows Update Agent

  1. Complete steps 1 - 6 exactly as typed above and skip the remaining steps.
  2. Copy the remaining files of the extracted Windows Update Agent to your WORK folder.
  3. Download, extract, and copy the updated version SFX.cmd below to your WORK folder (overwriting the current one). The updated version executes the command below, just before installing my Inst*.inf files.
    Start /Wait "Windows Update Agent" WUSetup.exe /wuforce /quiet /norestart


    SingleSFX.zipMD5: 80a72e6cde53014f987aacc12a5706eb

Integrate WUWebControl Class (Windows Update Web ActiveX Control)

During Step 2, you will be extracting and copying wuweb.dll into your WORK folder, let it overwrite the one you already copied there for Windows Update Agent.

NOTE: I have not tested this amended process. But I believe it will work, so long as WUSetup.exe has no issues with a different version (or MD5 Checksum) of wuweb.dll.

Edited by DarkShadows
Link to comment
Share on other sites

  • 2 weeks later...

@ spitf1r3

I appreciate your enthusiasm. However, there are really good reasons why I didn't just publish a completed file, and instead chose to publish the process to get the complete file. First and foremost, I imagine some people will take this information and adapt it to their own process. For example, I do not use nLite, or any other all-encompassing slipstreaming tool. (I wrote my own Integrate.cmd script, which I use to create my Windows XPCDs with.) Secondly, all of the ActiveX controls will get updated from time-to-time. Each is updated somewhere around once every 3 to 9 months, depending on the ActiveX control. In fact, during my first draft of the process, Microsoft updated one of the ActiveX controls, so I had to go back and make changes to my guide before it was ever even posted.

But now that you stuck that file up here, I expect that you will come back later, when Microsoft updates one of the components, and provide another updated download! Otherwise, your download will only be good for about 3 months or so; because, at least one of those .cab files I listed above is bound to change each quarter! :whistle:

EDIT 1:

Also, your addon cannot anticipate what things other users will want to hide from DataStore.edb.

EDIT 2:

Another thing, in your attached nLite addon, you have hard-coded the Front-slashed path variables (System32Key and WinDirKey) discussed in Issue-01 inside of each Inst*.inf file. So if someone using your addon has also changed their %SystemDrive% letter (or their Windows folder name) to something other than C: (or something other than Windows), then the .dlls and add ons will not be correctly registered.

Edited by DarkShadows
Link to comment
Share on other sites

That's what I intend to do: update this as regular as possible.

I'll add a date and version to my previous post.

Also, your addon cannot anticipate what things other users will want to hide from DataStore.edb.

If someone wanto get it easy, he won't mess with building it, he can just try my nLite addon:)

Besides, I really understand your point of view.

=====Edit=====

Another thing, in your attached nLite addon, you have hard-coded the Front-slashed path variables (System32Key and WinDirKey) discussed in Issue-01 inside of each Inst*.inf file. So if someone using your addon has also changed their %SystemDrive% letter (or their Windows folder name) to something other than C: (or something other than Windows), then the .dlls and add ons will not be correctly registered.

Is there no way to add variables?

Edited by spitf1r3
Link to comment
Share on other sites

I discussed this at length in my first post (under Issue 01). It is not possible to use .inf file variables to handle the registry settings with front-slashed paths. All .inf file DirID variables use backslashes, not front slashes. there was no way inside of an .inf file to get around this. This is why I updated SFX.cmd to programmatically determine the correct path to %WinDir% and System32, which it then writes (in front-slashed format) to each Inst*.inf file at installation time. SFX.cmd looks at your system, when you build it, and finds the correct system drive letter and Windows folder name. SFX.cmd then writes the correct information to the end of each Inst*.inf file, setting their variables correctly, before SFX.cmd installs the .inf file.

Also, I do not know why you needed to repackage things. MSDownloads.exe (if built how I documented above) already runs from svcpack.inf without any switches. It seems like a lot of work to repackage something that I have already showed you how to package.

Edited by DarkShadows
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...