Web Update Wizard - FAQ


I can't make the Web Update Wizard work! Help!

I distributed the Web Update Wizard with my installer and my users are forced to download an update the first time they use my software.  What am I doing wrong?


How do I advise my users if their software is actually already up to date?

My update script is not working!  How do I debug it?

How do I update the Web Update Wizard itself, when a new version is available?

Is there something like an "Automatic mode" or "Silent mode", where the updates are executed absolutely without user interaction? 

How does the wuw4.dll DLL or wuwstup.exe application communicate with the Windows Service?

My customers don't use Internet Explorer.  Is that a problem?

The Web Update Wizard Service does not appear to be installed / running in the Services applet and I am running Windows 2000, XP or 2003

Is it possible to use the Service application without the service having to run all the time?

What is the Web Update Wizard written in?

Can I have the source code?

How is the Web Update Wizard Licensed?

Who is PowerProgrammer?  I see references to Data Perceptions - help!

Will Web Update Wizard run an exe program to complete the update? In other words, can I create a patch that runs as an exe that will update my program and have Web Update Wizard run that exe? Or will your update program only work with zipped files?

My application cannot be exited just by clicking the Close (X) button the application window, as it also has the system tray icon. To exit it, my users do a right-click on the system tray icon and then exit. I could not find a way to terminate the process for my application given the window title name. Is there a way to do that?

How do I make the update process totally invisible to the user - i.e. with no user interface at all?

What kind of error message would a user see if the firewall prevents the user from using the Web Update Wizard?

Do you have any documentation on what the user should do in order to make the Web Update Wizard a permitted application?

After my program updates, does the user's system have to reboot?

Can I use the Web Update Wizard for more than one program?

The screen where the update wizard is retrieving the file is not adaptable. is there a way that we can customize that screen?

Our clients purchase yearly support subscriptions which give them access to program updates. We need to be able to restrict access to updates to only those clients who have active support subscriptions.

Does the Web Update Wizard work over a LAN?

How do I suppress the display of the console window when I call WebUpdateSvc4.exe directly from my application?

Some of my users are getting an error code 12152 - what does this mean?


Q: I can't make the Web Update Wizard work. Help!

See Problem Solving.


 

Q: I distributed the Web Update Wizard with my installer and my users are forced to download an update the first time they use my software.  What am I doing wrong?

At its simplest, the Web Update Wizard uses section numbers in your script to determine whether an update is needed.  The section number of the last successful update is stored in the WebUpdateSvc4.ini file on the user's PC.  Therefore, the first time they use your software and it calls a Web Update Wizard check the Web Update Wizard assumes an update is required because whatever section number you have in your update script has not actually been processed.

You can easily get round this problem using the FileVersion keyword, which lets you make updates conditional on the version number of the file running on the user's PC versus the version number you specify in your script.  Please see the script Example 4 for a fully worked and described example script.  Alternatively, you must programatically edit the WebUpdateSvc4.ini file the first time your application runs.

Top

Q: How does the wuw4.dll DLL or wuwstup.exe application communicate with the Windows Service?

Wuwstub.exe links to wuw4.dll.

Wuw4.dll communicates with the Web Update Windows Service through a named pipe.  The name of the pipe is '\\.\pipe\webupdate4'.  It also launches WuWUI.exe, the user interface component, at the same time - see architecture.

If you are familiar with using named pipes you can easily omit the wuw4.dll / webstub.exe component and instead call the named pipe directly.  The named pipe supports read operations from the client only.  That is to say, your client can write the URL of the script update file to the pipe, but cannot read anything from the pipe.

If writing to the pipe directly, you will need to pass the path to the folder which contains your running executable as well, so that the service can temporarily close the executable down prior to updating it.  In this case, you should append the path to the executable's folder to the URL, separated by a '|' character, as in the following example:

http://www.yourserver.com/webupdate/webupdate.txt|c:\program files\YourAppFolder\

Note that the URL must start "http://....".

Top

Q: How do I update the Web Update Wizard itself, when a new version is available?

See 'Script Examples - Example 6'.

Top

Q: My customers don't use Internet Explorer.  Is that a problem?
No, as long as IE 5.5 or later is installed.  If they access the internet through a proxy server than that must be configured either in IE or via the Control Panel / Internet Options applet.
Top

Q: The Web Update Wizard Service does not appear to be installed / running in the Services applet and I am running Windows NT, 2000, XP or 2003

You are likely to be missing one of the common Windows DLL files.  Check that the following files are available in the Windows/System32 folder:

You should be able to source an installer for these files from Microsoft - see:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvc60/html/redistribvc6.asp

If you cannot obtain then from any other source, you should also be able to find them from http://www.dll-files.com/.  (If all else fails, contact PowerProgrammer support and we will sort you out!)

Once you have resourced the missing DLLs you should uninstall and reinstall the Web Update Wizard.

Top

Q: Is it possible to use the Service application without the service having to run all the time?

The service application normally runs in the background and consumes minimal processor time and memory except when it is processing an upgrade.  Any modern version of Windows runs any number of service applications, and a service application provides the most satisfactory overall solution to automatic software updates, benefiting as it does from running in the SYSTEM security context.

You have the option to use WebUpdateSvc4.exe as a standard Windows executable and get the same functionality as in Windows Service mode.  The only exception is that a Service runs in the SYSTEM security context, whereas launching WebUpdateSvc4.exe as a simple executable means it runs in the security context of the logged on user.  This may or may not be an issue for you, depending on whether the logged on user has sufficient security rights to perform the file updates in your server update script.

To use WebUpdateSvc4.exe as an application all you need to do is append the text[AsApp] to the URL you pass to the Web Update Wizard through the exported WebUpdate() function or the command line you pass to wuwstub.exe.

Top

Q: What is the Web Update Wizard written in?

Visual C++ Version 6.0 with the Microsoft Foundation Class libraries.  PowerProgrammer also develops in Visual Studio 2005 using the latest C++/MFC but in order to minimise the installation overhead of the Web Update Wizard we have decided to continue developing in VC6, as most computers already have the dependent Microsoft Dlls already installed.

Top

Q: Can I have the source code?

The Web Update Wizard is a commercial software product.

You do not actually need the source code to productively use the Web Update Wizard.

If you have enhancement requests or have found a bug we would love you to let us know so that all Web Update Wizard users can benefit from the additions.  Data Perceptions / PowerProgrammer listens to its customers and tries hard to meet their aspirations for the product.  You can contact us at Wizard@DataPerceptions.co.uk.

So, that's a "no" then.  Sorry!

Top

Q: How do I advise my users if their software is actually already up to date?

If no update is applicable the default behaviour of the Web Update Wizard is to remain completely silent - i.e. to give no visual feedback.  This behaviour is (believed to be) appropriate in situations where your software automatically checks for updates as it launches - i.e. without the user clicking a button or selecting a menu option.

If you prefer to make the user click a button or select a menu option to initiate an update check, you can cause a Web Update Wizard message box to appear with your own message saying there are no updates available by appending a block to the end of your server script file, as shown in the sample script file below:

[7]
Filename=/prophecy/prophecy.exe
Message=This update will upgrade your Prophecy software to version 2.0
TargetFolder=C:\Program Files\Prophecy

[99999]
Message=You already have the very latest version of Prophecy!

In this instance, if the user does not have update [7] the Web Update Wizard will download and install it the first time they check for updates.

However, the next time they check they will receive a message box with the text shown in the "Message=" line for the section starting "[99999]":

If you then insert an update [8] section into the server script file, replacing [7], the Web Update Wizard will again process this update for the user.  Once update [8] has been successfully processed they will go back to receiving the message box in the [99999] section.

Note: the actual section number "[99999]" is not significant - it simply has to be the highest in the script file.  It does not have to be the next sequential number.  We have used "[99999]" on the basis that by the time we need "[1000000]" we will either be retired or, if we really have to, will be able to change the number to "[1000000]" in our favourite text editor (Word 2303?)!

Top

Q. How is the Web Update Wizard Licensed?

The Web Update Wizard is licensed either per single application, or for any number of applications developed within your organisation, depending on which licence you have purchased. See Purchasing the Web Update Wizard.

Top

Q. My update script is not working!  How do I debug it?
  1. Check that the Web Update Wizard service is actually running on the test computer and that a valid Web Update Wizard licence file (WebUpdateSvc4.lic) is located in the same folder as your running application (the application which calls the Web Update Wizard).
  2. Check the syntax of each keyword line against the keyword reference examples in this help file.  Note that keywords ARE case-sensitive.
  3. If the script is unable to download a file needed for the update, check you have a leading '/' character in your Filename or Zipfile keyword line or that you have specified the full URL, including the "http://" part..
  4. If the script is unable to download a file needed for the update, can you download it by typing the URL into the address bar of Internet Explorer?  If not, perhaps there is a security configuration issue on your server.
  5. Check the WebUpdateSvc4.log file, which is maintained by the Web Update Wizard service as it runs.  You will find this file in the same folder as WebUpdateSvc4.exe - normally the System32 folder.  Check for error messages and that the log confirms that the steps you expected from your script have been completed.
  6. Switch Verbose Logging to the WebUpdateSvc4.log file on, as described here.
  7. If your ExecBefore or ExecAfter commands are not working correctly, ensure that you use quotation marks where the path is or expands to a long filename.
  8. Start with a simple script and add to it one line at a time.  Test on each added line.
  9. Ensure that your test environment is set up correctly - i.e. you start with the correct versions of files, folder contents etc..  If you see inconsistent behaviour from the Web Update Wizard between tests then this is the most likely cause.
  10. See also: Problem solving.
Top

Q: What is the relationship between Data Perceptions and PowerProgrammer?

Data Perceptions is the developer of Prophecy, a business forecasting and planning application. The Web Update Wizard emerged as a separate product out of original work that Data Perceptions implemented in Prophecy. Rather than market the Web Update Wizard under the Data Perceptions 'brand', it was felt more appropriate, due to the more technical nature of the Web Update Wizard, to market it under a different name - PowerProgrammer. 

However, the developers of Prophecy for Data Perceptions and the PowerProgrammer Web Update Wizard are one and the same.  As developers of Prophecy to many corporate customers, we have found the Web Update Wizard a great way of deploying fixes / new versions of our software with minimum disruption to our valuable customers.

Top

Q: Will Web Update Wizard run an exe program to complete the update? In other words, can I create a patch that runs as an exe that will update my program and have Web Update Wizard run that exe? Or will your update program only work with zipped files?           
Top

Q: My application cannot be exited just by clicking the Close (X) button the application window, as it also has the system tray icon. To exit it, my users do a right-click on the system tray icon and then exit. I could not find a way to terminate the process for my application given the window title name. Is there a way to do that?

Tray apps have window titles too - you just cannot see them!  Download something like Winspector (http://www.gipsysoft.com/) or use Microsoft's Spy++ utility and use it to find the window title text of your tray application.

There will be a slight delay before the tray icon disappears in response to the Web Update Wizard's activity but I this is actually a Windows painting type issue associated with all similar force-close operations on tray apps.

You can also use the 'KillProcess' keyword, which elegantly terminates all running instances of a specified application (and restarts it after the update).  If your application is completely window-less then that is in fact the only alternative, but it works equally well for windowed applications and is the recommended option (replacing WindowTitle=) for closing running applications. (Note: KillProcess was added in the Web Update Wizard V3.00 as a superior method for terminating running applications prior to update.)

Top

Q: What kind of error message would a user see if the firewall prevents the user from using the Web Update Wizard?

If the Web Update Wizard http calls for the server script fails then it assumes you are not connected to the internet and remains totally concealed - i.e. no error boxes displayed etc..  Obviously it would not do for disconnected laptop users to keep seeing error boxes whenever they are using the computer not connected to a network.  Therefore any message you see would be generated by the firewall, not the Web Update Wizard.

Both the Service application, WebUpdateSvc4.exe and the user interface component, WuWUI.exe, make calls to the internet to download update scripts or your software updates. Both components need to traverse the firewall to do so.

Top

Q: How do I make the update process totally invisible to the user - i.e. with no user interface at all?

If you want to make the update totally invisible to the user, your needs to use the following options:

Top


Q: Do you have any documentation on what the user should do in order to make the Web Update Wizard a permitted application for my firewall?

Depends on the firewall!  The Web Update Wizard uses port 80 exclusively, which is the standard http port.  Most software firewalls contain rules which filter access on a per-application basis.  Generally the firewall will prompt when a new application tries to use a port and the user can either create a rule which permits or denies access to the port.  No update component in the world is going to operate any differently as far as firewalls are concerned - the component would need to be able to programmatically edit the rules list of every firewall known to man (and woman!), which would both be impossible and would also be perceived by users as a massive security risk.  If you want update over the web then your customers will have to accept, and should be used to, their firewalls prompting them for rules.

Top

Q: After my program updates, does the user's system have to reboot?

Not normally.  If an update is required and you include the appropriate keyword lines in your script file, the Web Update Wizard will close your application and download the update, overwriting (and optionally backing up) your program's file.  It will then restart your program.

However, if your update process does need to replace in-use files which closing your app does not free up, you can use the MoveFileEx and Reboot keywords to replace the in-use files.  These keywords are fully documented in the help file.

Top

Q: Can I use the Web Update Wizard for more than one program?

Yes.  But please note that the single app version gives you license to use the updater for one application title only.  The site licence version lets you use it for any number of applications produced by your company.

Top

Q: The screen where the update wizard is retrieving the file is not adaptable. is there a way that we can customize that screen?

Yes!  See 'Customising the 'Look and Feel' of the Web Update Wizard Dialogs' and 'Web Update Wizard Language Files'

Top

Q: Is there something like an "Automatic mode" or "Silent mode", where the updates are executed absolutely without user interaction?           

See 'NoSuccessMessage' in the keywords section of the help file. The following example will generate no dialog with the user:

[4] Filename= http://www.myserver.com/update.exe
NoSuccessMessage

Of course, if you need to close an app with a WindowTitle or KillProcess then the Web Update Wizard will tell the user it needs to do this. To close without permission would be rude :-).                               

Top

Q:Our clients purchase yearly support subscriptions which give them access to program updates. We need to be able to restrict access to updates to only those clients who have active support subscriptions.           

I believe your best option is to use PHP/ASP to achieve your requirement.  See 'Using PHP/ASP to dynamically generate update scripts' in the help file.

Alternatively, you could add your own command processing to validate the update process using 'ExecBefore' and 'ExecAfter' keywords in your scripts.

Top

Q: Does the Web Update Wizard work over a LAN?
The Web Update Wizard is designed to deliver software updates over the web. It uses 100% http: protocol in order to do this.  Therefore, if you want to use the Web Update Wizard over a LAN (Local Area Network) then you must install and run a web server on that LAN.  There are no special requirements for the web server, as only http: is used by the Web Update Wizard.  A (relatively) simple one like the the Abyss Web Server from http://www.aprelium.com/ is excellent, free and very compact.

However, no, the Web Update Wizard cannot operate against a drive letter and path or a UNC.  (That's why it's called the Web Update Wizard!)
Top

                Q. How do I suppress the display of the console window when I call WebUpdateSvc4.exe directly from my application?
If you are calling WebUpdateSvc4.exe via a ShellExecute() API call or equivalent you should use SW_HIDE as the nShowCmd display argument.  This will suppress the console window display and the Web Update Wizard will still display its own windows correctly.
Top

Q. Some of my users are getting an error code 12152 from the Web Update Wizard and the updates fail. What is error code 12152?
The most likely cause is using Windows Integrated Authentication (formerly known as 'NTLM') to store your update scripts or update files on your server behind a password protected folder.

Although the client machine hosting the Web Update Wizard will be a Windows machine capable of authenticating with a Windows Integrated Authentication host, it may connect through a non-Windows proxy server which does not support this type of authentication. Switch to 'Basic authentication' and the error message should disappear.

Top