Upgrading Notes

Unfortunately version 4 is not just version 3 with a few tweaks! As a result of the additional constraints imposed (largely) by User Account Control in Windows Vista the whole product has had to be re-engineered. The new architecture is described here. The major changes from V3 to 4 are described here.

A new user interface component has been introduced, WuWUI.exe, which handles all interaction with the user which was previously launched from the service component, WebUpdateSvc4.exe. It also handles the downloading of files in the logged on user's security context (because user SYSTEM, which the service runs in, typically does not have rights to corporate proxy servers).

Software firewalls which operate a challenge policy on internet access will challenge WuWUI.exe the first time it is used. It does need to be allowed access to the internet - otherwise updates will not be possible!

The key Software Update Wizard components have been renamed - appending a '4' to the V3 filenames. WebUpdateSvc.exe in V3 becomes WebUpdateSvc4.exe in V4, and wuw.dll becomes wuw4.dll.

The exported functions in wuw4.dll are the same as in V3. However, their entry points (addresses) are different. If you are using dynamic linking / GetProcAddress() to use the exported functions from the dll your existing application may be able to use wuw4.dll if you rename it back to wuw.dll. If you do this, however, it is important that you copy wuw4.dll to your application's running folder to rename it, leaving the original wuw4.dll in the System32 folder (in case other applications use the Software Update Wizard V4 to handle automatic updates).

The benefit of the renaming for V4 is that both versions can co-exist on the same computer.

If your application calls wuwstub.exe then upgrading to V4 requires replacement of the V3 wuwstub.exe in your application's folder.

Running V3 and V4 on the same computer

You can run version 3 and version 4 of the Software Update Wizard on the same computer, either a developer or as an end user, without any conflicts. The following table shows the differences between the two versions:

Component Version 4 Version 3 Comment
Service application / application WebUpdateSvc4.exe WebUpdateSvc.exe V4 has '4' in its filename!
DLL Wuw4.dll Wuw.dll V4 has '4' in its filename! However, the exported functions from both dlls are the same.
WuWStub.exe WuWStub.exe WuWStub.exe Filename is the same in both versions. You must ensure that the correct version is installed in your application folder for the version of the Software Update Wizard your application needs to call.
User interface component WuWUI.exe n/a This is a new component for V4 and handles all interaction with the user. Direct user interaction has been removed from the Service app in V4 in order to be fully compliant with Vista and Microsoft's prescription on the behaviour of service applications.
Licence file WebUpdateSvc4.LIC WebUpdateSvc.lic V4 has '4' in its filename!
Named pipe "WebUpdate" "WebUpdate4" This is the named pipe used to communicate between the dll (wuw.dll / wuw4.dll) and the service (WebUpdateSvc.exe / WebUpdateSvc4.exe). You only need to worry about this if you are communicating directly with the service using a named pipe - we recommend you use wuw4.dll/wuwstub.exe for this purpose.

 

Upgrading Existing Users from V3 to V4 using an Update Script

The recommended route is to use our wuwinstaller.exe to install the Software Update Wizard V4 and call the previous version's uninstaller in an ExecAfter, as shown here:

[1]
; This section installs WuW4 and uninstalls WuW3
RunAlways
Message=Hello <USERNAME>,||We will now install a new version of the Software Update Wizard and you will like it!
Zipfile=http://www.mycompany.com/wuwupgrade.zip
KillProcess=myapp.exe
CheckFile=<SYSDIR>\WebUpdateSvc4.exe<Version=4.0.0.0>
ExecAfter="<CLIENTFOLDER>\wuwinstaller.exe" /S<Wait=Yes>
ExecAfter="<SYSDIR>\uninstwuwservice.exe"
ExecAfter=cmd /C del "<CLIENTFOLDER>\wuwinstaller.exe"
ExecAfter=cmd /C copy "<WINDIR>\WebUpdateSvc.ini" "<WINDIR>\WebUpdateSvc4.ini"

The sample script installs the new version 4 licence file into your application's folder. Note that this is a necessary prerequisite, as the existing V3 file has a different file name and renaming it will not work.

The script uses a zip file which should contain the following:

The script downloads the zip. It then installs V4 and uninstalls V3 in the ExecAfters.

If you are using wuw.dll/wuw4.dll to initiate Software Update Wizard updates then you must remember that the existing version of your application will stop being able to receive updates after V4 has been installed and V3 has been uninstalled.

Therefore the zip file referenced in the Zipfile line above must contain both the wuwinstaller.exe redistributable installer for V4 and an updated version of your application which links to V4's dll, wuw4.dll rather than the V3 dll, wuw.dll. The zip file must also contain the WebUpdateSvc4.lic licence file for V4.

If you are launching wuwstub.exe to initiate Software Update Wizard updates then the zip file must also contain the updated V4 version of wuwstub.exe and the WebUpdateSvc4.lic licence file for V4. Wuwstub.exe and WebUpdateSvc.lic are NOT included in wuwinstaller.exe.

Summary:

To successfully update from V3 to V4 you need a script similar to the one shown above. The zip file, wuwupgrade.zip, must contain the following files, depending on how you call the Software Update Wizard from your application:

Your application uses the exported function(s) in wuw.dll/wuw4/dll...
Your application triggers an update check by launching wuwstub.exe...
wuwinstaller.exe
wuwinstaller.exe
WebUpdateSvc4.lic
WebUpdateSvc4.lic
Updated version of your application, which links to exported functions in wuw4.dll Version of wuwstub.exe supplied in Software Update Wizard V4 developer install folder

 

After the update, the following V4 files must reside in your application's folder:

After the update, the following files will have been installed into the System32 folder by wuwinstaller.exe:

Additional Considerations

The Software Update Wizard script shown above will reliably update your users' Software Update Wizards from V3 to V4 and will not 'spoil' any other software which relies on the Software Update Wizard V3 for updates.

However, there is one gotcha. Your original uninstaller will still be set to uninstall Software Update Wizard V3, calling the V3 uninstaller, uninstwuwservice.exe. The uninstaller for V4 is wuwuninst.exe and will not be called by your uninstaller unless you also update it to call V4's wuwuninst.exe (in the System32 folder) rather than V3's uninstwuwservice.exe (also in System32).

An additional implication is that, if your original uninstaller still calls the V3 uninstaller when a user uninstalls your software V4 will stay on the computer, even if no other applications require it for receiving updates.

Unfortunately this situation has to be, because V4 is so heavily re-architected. Existing apps (other than your own) which are still set to call V3 of the Software Update Wizard still need V3 to be present on the host machine.

Therefore, the ideal solution is that you use the Software Update Wizard to provide an updated uninstaller for your application which calls the V4 uninstaller, wuwuninst.exe, instead of the the V3 version, uninstwuwservice.exe.

Failing that, the V4 redistributable installer, wuwinstaller.exe, makes a visible entry in the Control Panel / Add and Remove programs. The user should be directed to that option if they wish to completely remove your application.

As the above paragraphs attempt to show, uninstallation is quite complex within an automatic updates scenario where the updater itself gets updated. We hope the information provided helps you navigate the process with the required awareness.