Installing Microsoft Update ActiveX Controls Unattended using MSDBuild
Credits "We all stand on the backs of giants."
Version: 5.5
Last Updated: 06:30 PM 05/28/2009 (GMT-5 +1 during DST)
Source Materials:
- "Inside COM"—Dale Rogerson. Microsoft Press ISBN 1-57231-349-8 Excerpted in: "INFO: Registry Entries Made by an ActiveX Component"—Microsoft Knowledgebase Q183771
- "Safe Web Surfing with the Internet Component Download Service"—Mary Kirtland
- Several MSFN Forums threads:
- Integrating Windows Update V6
- Microsoft Update, How to integrate it - ways to do it
- Tricking WU think Messenger 4.7 is installed
- HOWTO: Integrate Apr WGA!
- Integrating Windows Update V6
- 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
- Acheron (hp38guser)
- Windows Update
- Microsoft Update
- Office Update
- Microsoft Update Catalog
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
- 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.

- 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.
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:
- From the %WinDir%\Downloaded Program Files folder in Windows Explorer:
Right-click the add-on, and select Update from the context menu. - 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.

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.
I now maintain this project as three interdependent and inseparable parts:
- 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.
- 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.
- 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.
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
- Download Windows Updates Downloader (WUD) by Jean-Sebastien Carle (JCarle on MSFN.org) from http://wud.jcarle.com/ 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! - Click the MSDownloads.ulz download link in this article. This is an update list that will automatically import itself into WUD.

English –
MSDownloads.ulz (3.5K)
Number of downloads: 1021
Spanish –
MSDownloadsESN.ulz (1.93K)
Number of downloads: 79(Thanks to: Rodrigo Fernandez hipo_loco on MSFN.org)
- In Windows Updates Downloader:
- Select the MSDownloads Update List.
- 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. - 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!
- Product as subfolder
- Check the box next to the MSDownloads category, to select all the downloads. (Expand the category by clicking the "+" in the tree.)

- Click Download. WUD downloads all the components in succession.
- Select the MSDownloads Update List.
- 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:
- Copy SFX-MSD.ini
from: the WorkMSDB subfolder
to: the MSDownloads download folder. - Edit your own customized SFX-MSD.ini and save it
to: the MSDownloads download folder. - Re-execute either MSDBuild.cmd or MSDBuild.exe.
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. - Copy SFX-MSD.ini
- Read the Version History, and the related detailed sections for changes.
- 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. - Open Windows Updates Downloader and select the MSDownloads Category to force all related files (including my MSDBuild.exe) to be re-downloaded.
- Recreate MSDownloads.exe by double-clicking on MSDBuild.exe.
You must correctly integrate (or slipstream) all these Windows updates into your XPCD source. All of the updates support the SVCPACK Integration Method discussed in the MSFN Unattended Guide. And all but Windows Update Agent support the Type I SVCPACK.INF or the /INTEGRATE methods discussed in the MSFN Unattended Guide. 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.
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: KB942288
Integrate into your XPCD with the /INTEGRATE switch. This update adds the KB942288.cat and KB942288.exe entries (see Sample svcpack.inf File).
NOTE: Microsoft knowledgebase article KB946480 List of fixes included in Windows XP Service Pack 3 states that Windows XP SP3 includes KB898461. However, Windows Update will still list KB898461 as a required update after installing Windows XP SP3.
Knowledgebase: KB898461
Integrate into your XPCD with the /INTEGRATE switch. This update adds the KB898461.cat and KB898461.exe entries (see Sample svcpack.inf File).
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)
WARNING: Some older versions of the KB905747 download will not install on Windows XP SP3, so ensure you download the most recent version!
Knowledgebase: KB905474 Download Page SearchURL
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.
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).
Knowledgebase: http://support.microsoft.com/kb/946928
Static URL for Windows XP 32-bit Pro:
http://go.microsoft....k/?LinkID=91237
Static URL for Windows XP 64-bit Pro (not supported by MSDbuild):
http://go.microsoft....k/?LinkID=91238
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 does the following:
- Extracts all its files to a subfolder under %TEMP%.
- Executes the SFX-MSD.cmd script, via a hidden command console, which:
- Ensures Windows XP is running.
- 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.)
- Checks for all required Setup information (Inst*.inf) scripts required for each ActiveX control (some are dependent on others).
- 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.
- Copy the ActiveX control's files to the correct folders.
- Ensures Windows XP is running.
- Deletes its subfolder under %TEMP% after installation completes.
- From SVCPack (T-13):
- Copy MSDownloads.exe to XPCD Source\I386\SVCPACK.
- 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).
- Copy MSDownloads.exe to XPCD Source\I386\SVCPACK.
- From CmdLines.txt (T-12):
- Copy MSDownloads.exe to XPCD Source\$OEM$
- Add a MSDownloads.exe entry to XPCD Source\$OEM$\cmdlines.txt.
- Copy MSDownloads.exe to XPCD Source\$OEM$
[ProductCatalogsToInstall] 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
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.
- 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.
- Windows Update
- Microsoft Update
- Office Update
- Microsoft Update Catalog
Static URL: http://go.microsoft....k/?linkid=39204
Windows Update: Windows Genuine Advantage Notifications - KB905474
Script: InstWGAV.inf
Shortcut: None
Files: Destination Folder --------------------------------------------------------------------------- LegitCheckControl.dll %WinDir%\System32 LegitCheckControl.inf %WinDir%\Downloaded Program Files
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
- Microsoft Update
Static URL: http://update.microsoft.com/.../wuweb_site.cab
Windows Update: Windows Update Agent
Script: InstWUWC.inf
Shortcut: None--by default, Windows XP already includes a shortcut.
Files: Destination Folder --------------------------------------------------------------------------- wuweb.dll %WinDir%\System32 wuweb.inf %WinDir%\Downloaded Program Files wuweb.cat * Not installed by InstWUWC.inf
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
Static URL: http://update.microsoft.com/.../muweb_site.cab
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.)
Files: Destination Folder --------------------------------------------------------------------------- muweb.dll %WinDir%\System32 muweb.inf %WinDir%\Downloaded Program Files muweb.cat * Not installed by InstMUWC.inf DataStore.edb * %WinDir%\SoftwareDistribution\DataStore
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
Cabinet File: MuCatalogWebControl.cab
Static URL: http://catalog.update.microsoft.com/.....gWebControl.cab
Windows Update: None
Script: InstMCWC.inf
Shortcut: Adds Microsoft Update Catalog
Files: Destination Folder --------------------------------------------------------------------------- MicrosoftUpdateCatalogWebControl.dll %WinDir%\System32 MicrosoftUpdateCatalogWebControl.inf %WinDir%\Downloaded Program Files
There is nothing out of the ordinary for this ActiveX control.
- Office Update
Static URL: http://go.microsoft.com/.../OGAControl.cab
Windows Update: None
Script: InstOGAV.inf
Shortcut: None
Files: Destination Folder --------------------------------------------------------------------------- OGACheckControl.dll %WinDir%\System32 OGAControl.inf %WinDir%\Downloaded Program Files
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
Static URL: http://office.microsoft.com/.../opuc4.cab
Windows Update: None
Script: InstOUIE.inf
Shortcut: Adds Microsoft Office Update
Files: Destination Folder --------------------------------------------------------------------------- Office.ico * %WinDir% OPUC.dll %WinDir% OPUC.inf %WinDir%\Downloaded Program Files
NOTE: Office.ico is not part of the ActiveX control downloaded from Microsoft. It is used as the icon for the Start Menu Shortcut.
We use DataStore.edb to help accomplish two things:
- Ensure the Windows XP installation uses Microsoft Update from the start.
- Hide any updates we wish to exclude from Windows/Microsoft Update.
- On your engineering PC, slipstream or integrate all the updates you wish to include into your XPCD.
- Install this XPCD onto a clean VirtualPC or TestPC.
- In the clean Windows XP installation, run Windows Update.
- 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).
- Progress through Microsoft Update to the scan screen (Express/Custom)
- Perform a Custom system scan.
- Hide any update that you wish to exclude from Windows or Microsoft Update (Say for example Windows Messenger v4.7).
- Close Internet Explorer.
- Right-click on My Computer and select Manage from the context menu.
- In Computer Management, open Services and Application - Services.
- Right-click on the Automatic Updates Service and select Stop. (This ensures the file is no longer locked so it can be copied.)
- Open Windows Explorer to %WinDir%\SoftwareDistribution\DataStore.
- Copy DataStore.edb to your MSDownloads folder on your engineering PC.
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.
- 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.
- MSDBuild.cmd – MSDownloads.exe Builder Script
- 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.
- 7za.exe
- 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.)
- DataStore.ed_ – DataStore.edb (used if you do not provide your own).
- 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:
- Extract payload from download (either WgaNotifyPackageStandalone.exe or wganotifypackageinner.exe).
- Delete download (WindowsXP-KB905474-<LANG>-x86.exe).
- Rename the payload the same as the download.
NOTE: Read the Windows Genuine Advantage Notifications section.
- Extract payload from download (either WgaNotifyPackageStandalone.exe or wganotifypackageinner.exe).
- For each ActiveX control's .dll file:
- 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)
- LegitCheckControl.dll (WGA Notifications)
- Compares the .dll file versions (A or B, not both).
- 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.
- Only when not executed on Windows XP: Compare the versions of the .dll files in: the cabinet file or the related Windows Update.
- 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.
- 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.
- Extract any related Windows update containing the ActiveX control's .dll to a temporary subfolder named after the 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
- 7za465 subfolder
- Open the MSDBuild.log file in Notepad.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ModuleUsage\_
So we should end up with subkeys like these:
_C:/WINDOWS/OPUC.DLL] _C:/WINDOWS/system32/LegitCheckControl.DLL] _C:/WINDOWS/system32/wuweb.dll] _C:/WINDOWS/system32/muweb.dll] _C:/WINDOWS/system32/OGACheckControl.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".
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!
This issue impacts you if you use a language other than English.
WORKAROUND:
- 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.
- List the %WinDir%\Downloaded Program Files folder in Windows Explorer.
- 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.
ActiveX Control SFX-MSD.ini Default URL# --------------------------------------------------------------------------- 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 *
Default URLs (Language = English-United States): --------------------------------------------------------------------------- 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
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.
Default (English-US) Shortcut Name Shortcut value InfoTip value --------------------------------------------------------------------------- Microsoft Update MUWC_Shortcut MUWC_InfoTip Microsoft Update Catalog MCWC_Shortcut MCWC_InfoTip Office Update OUIE_Shortcut OUIE_InfoTip
- 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.)
- 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).
- Updated Windows Genuine Advantage Notifications to v1.9.0040.0.
- 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.
- 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.
- 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.
- 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: "<, >, (, ), %, ^, |, *, \, !".
- 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.
- Major guide rewrite, worth re-reading (hopefully it is more clear).
- 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!
- Updated Windows Update Agent to v7.2.6001.788.
- 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.)
- Updated InstOUIE.inf (Office Update Installation Engine) to v12.0.5580.1000 (Tue, 26 Aug 2008 05:04:10 GMT).
- 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.)
- Updated Windows Update Agent section of the guide (again). I just noticed that the newest version of the download from Microsoft will
- 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).
- Updated Windows Update Agent to v7.2.6001.784.
- 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.)
- Updated all Inst*.inf files to suppress per-user authorization of ActiveX controls in IE7. A big thanks to ricktendo64 for this!
- 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.
- Updated LegitCheckControl.cab (KB892130) to v1.7.69.2.
- v2.5 - 2008-01-17
- Added KB898461 as a required Windows Update.
NOTE: Readme.txt in download was not updated for this version.
- Added KB898461 as a required Windows Update.
- v2.2 - 2007-12-21
- More Readme.txt revisions (clearer svcpack.inf examples).
- Fixed missing hidec.exe noted in v2.1 attachment.
- More Readme.txt revisions (clearer svcpack.inf examples).
- 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.
This post has been edited by DarkShadows: 28 May 2009 - 09:08 PM



Help


Back to top
















