Posts tagged: software updates

The Software Updates Menu

By , December 20, 2016 12:35 pm

We introduced the Software Updates menu in 2012. This coincided with the introduction of automatic software updates. Various bug fixes have been applied to the software update software since then. But we’ve done nothing with the software updates menu at all. Until recently.

In response to some unusual problems a few of our customers have had we thought we could improve the experience of using the software updates function.

Problems with authentication

One customer reported that although he’d entered his login credentials, the login and download were failing. But strangely our software wasn’t prompting him for a correct set of login credentials (which is what should happen). After some investigation we found that some failures on our server were being amalgamated into one global error code sent back to the client. The global error code was then interpreted correctly according to the error code, but that response wasn’t correct with respect to the specific error on the server. We broke all the failure points on the server into discrete error codes and now handle all of these individually. This allowed the problem the customer had to come to the surface – their credentials were in fact incorrect – he’d made a typo while entering his details.

In addition to this we’ve now made changes to the email entry fields that validate only correct characters can be entered in an email address – enter any incorrect ones and the field turns red. Not enough @ characters – red, too many @ characters – red, whitespace in the user name which isn’t quoted – red, whitespace in the domain – red. Etc.


There is also the error use case where a customer enters their login details for, say, C++ Performance Validator but the tool they are using when they enter these details is C++ Memory Validator. The login details are valid, but not for this software tool. The image below shows the error message when using the Test Login Details… button.


We also added two new menu entries for resetting the user credentials and also for setting the user credentials. If the user credentials are reset, no software updates will occur. If the user credentials are set (correctly) software updates will occur.


Problems with TMP security

When a software update for one of our tools downloads it’s downloaded by default to the directory defined by the TMP environment variable. On a Windows 10 machine this most likely points somewhere like c:\users\stephen\AppData\Local\Temp.

The TMP environment variable is used by the _ttempnam() function to provide a temporary filename for use by the software that calls it. _ttempnam() uses the TMP environment variable to do it’s job. We wrote the software updater code, tested it, and didn’t really think much more about it until we recently received an email from a customer. I’m going to quote a bit of it below.

I am an IT manager for a software house that uses your Performance
Validator and Memory Validator. With the new threats from ransomware
we have locked down developers machines so files cannot be executed
under the users Appdata folders which contains the users temp folder.

He wanted to know what our filename policy was so that he could whitelist our software updater to run inside the directory that he’d locked down. _ttempnam() returns names that are different each time. There is a pattern to the names we use. I explained the rules but then suggested that providing a dedicated download directory removes the need for whitelisting and provides a better security environment. He agreed. So that’s what I’m going to discuss next.

Specifying a directory

The first thing we had to do is replace the use of _ttempnam() with a user specified directory.

The user specified directory defaults to the same location that _ttempnam() would have used. Consult the _ttempnam() documentation and follow the rules for generating the default value. This is basically using GetEnvironmentVariable() to query the TMP environment variable.

Provide a means for the user to specify the download directory.


The directory needs to exist. If the directory doesn’t exist, it should be obvious as the directory name is entered.


The directory needs to have execute privileges and write privileges. If either of these privileges does not exist for the specified directory the user should be alerted to the fact.



The Reset button allows the directory to be set to the default value.

Add an entry to the Software Updates menu to enable the user to access this dialog. Update the Startup Wizard to allow the software update directory to be specified.


We’ve also updated the software update code to handle the use cases where a valid software update directory is supplied but is then deleted, or it’s permissions altered to deny write or deny execute privileges. This also accommodates the case where nothing changes with the directory but the settings get damaged or corrupted somehow (editing the registry, a machine crash…).


We’re always trying to improve your experience with our software. Whether it’s making the use of Software Updates so easy you don’t need to talk to us about it, or improving your security environment. If you have an issue that you think will improve the software for everyone please do get in touch.

The Startup Wizard

By , December 20, 2016 11:33 am

We’ve just added a new Startup Wizard to all our C++ tools.

The purpose of the startup wizard is to unify the various different dialogs that would be shown the first time the software ran. These would configure different aspects of the software. Placing them all in one place, a wizard, provides a better first run experience. We’ve also taken this opportunity to configure software updates for non-evaluation users of the software. As a final touch, we’ve included an overview video for the software.


The first panel explains what’s going to happen next.


Symbol Environment Variables

The second panel allows you to configure which environment variables (if any) you wish to use to control the symbol search process for symbols contained in PDB files.


IDE / Compiler

The third panel allows you to configure which IDE / Compiler / Linker you are using. This is important as it affects how symbol lookup is performed (Visual Studio has various quirks in its history of symbol handling, we have to work around that).


Software Updates

The next panel is not shown to people evaluating the software. Only purchasing customers see this panel. The panel allows you to configure your software update information and also where the software updates are downloaded to.

It is important to be able to specify where they are downloaded to because of potential security risks that arise from allowing the TMP directory (c:\users\[username]\AppData\Local\Temp) to be executable. We use the TMP directory as a default, but if you think that’s not a good idea you can specify your own download directory and set permissions for TMP to deny execute privileges.


Video Overview

The final panel is a video overview of the software. The purpose of this video is to quickly show many areas of the software to encourage you to explore the capabilities of the software.


Important changes to how we bring you software updates

By , November 17, 2011 11:36 pm

In this blog post I’m going to tell you about some important changes that will be happening with respect to how we provide software updates to the people that use our software tools.

Software Update Email Notification

At present customers that have purchased our software tools receive software software update notifications via email. In addition participants in our beta software programmes also receive software update notifications via email.

Software updates are released whenever we have bug fixes we think should be released or whenever we have new functionality we wish to make public. This can result in releases on a day by day basis or no releases for weeks at a time. We never hold bug fixes or releases back for service packs. We always try to get them to our users as rapidly as possible.

For some people the constant email notifications are too much and they ask not to be notified any more. For other people they welcome the fact that we supply bug fixes and updates on a regular basis. Clearly there is no one-size-fits-all solution to email notification.

Another problem is bounced email. Sometimes valid email addresses bounce. Do we unsubscribe this email automatically or do we try it again the next time (because quite often these email addresses spring back into life)? Either way, over time we end up building a large list of dead email addresses.

Automatic Software Updates

Starting next week, we’re going to release new software versions which are capable of self-updating. These new releases will check for the availability of a new release, prompt you to ask if you are interested in the new release and if you are, login to our server, download the software, install the software and new license keys and then restart the software.

Software Maintenance

In addition to the ability to keep the software up to date it will also be possible to update the software maintenance from within the software update package. As such you will always know when the software updates are about to expire and when you need to renew your software maintenance.

When you purchase your software tools from us we always provide you with at least one year of software updates as part of the purchase. Up until now we have never enforced that. We have provided software updates for periods much longer than one year for some customers. With this new functionality we will continue to provide one year of software updates but we will now enforce that period from January 15 2012.

As such if you’ve purchased since a year of January 15 2011 your software maintenance will continue for a year from the purchase date. If you purchased before January 15 2011 your software maintenance will need renewing on January 15 2012. Two examples should demonstrate this:

Example 1:
Purchase date: 2009-10-31
Maintenance expiry date: 2012-01-15
Example 2:
Purchase date: 2011-08-31
Maintenance expiry date: 2012-08-31

The reason for this change is because there is a cost to us to provide the software updates and we can no longer provide these for free. We always intended to charge for software updates but for various reasons never got around to do it. Thus some of you, our customers, have had a very extended period of software updates without a maintenance fee.

As of the next software update, the only way to receive updates will be via the self-updating software updater. We will not be sending out software update emails after the next update.

For beta test participants, the maintenance expiry date will be adjusted as the beta test progresses. There will be no maintenance fee for beta test participants.

How does the self-updater work?

Software update menu

We’ve added two menu items to the Tools menu in all full product and beta versions of the tools. These options allow you to edit the schedule when the tool will check for software updates and also to force a check for software updates.

In order to accommodate different working styles we’ve provided a variety of different update options so that the disruption to a given software developer’s workflow is minimized.

The software update schedule can be set to check for updates every day, every week, monthly or not at all. This check is performed when the software is first started on a given day. This means that people running multiple day tests (say doing regression testing on a large test suite) will not be interrupted by a software update prompt. We think that given how the tools are used they are typically not kept open for extended lengths of time and will typically be started when needed. As such checking once during startup is a suitable event to check for software updates.

The date of the most recent check is displayed on the schedule dialog.

If you wish to force a software update just choose “Check for software updates…” on the menu.

Software update schedule

When a software update is available the user will be prompted with a confirmation dialog providing the choices to download and install the software, to ignore the download until later or to ignore the download completely.

Options for editing the update schedule or purchasing additional software maintenance are also provided.

Software update yes, no, skip selection

If the user chooses to ignore the download they will be prompted about this download (or a subsequent download) at the next software update interval (the next day, next week, or next month).

If the user chooses to skip this download they will only be prompted to download if a new software version becomes available for download. Should the user change their mind they can always choose to force a check for updates using the menu “Check for software updates…”.

If the user chooses to download and install the software, the tool contacts the server and logs in using the user supplied credentials (provided when you purchase the software or join a beta test). If no login credentials have been supplied the user is prompted for the login credentials.

Software update login details

Once logged into the server the software downloads the software with progress shown on a download progress dialog.

Software update login details

When the software is downloaded successfully the tool will close and the software will be installed. Finally the tool is restarted so that work can continue with the tool.

Expired Software Maintenance

Software maintenance has an expiry date. The software continues to work but the ability to receive software updates ceases at this date. When software maintenance has expired a software maintenance expiry dialog is displayed. The user of the software has the opportunity to purchase additional software maintenance to continue receiving software updates.

Software update expired

Software Maintenance Pricing

Given that I’ve discussed purchasing maintenance I should just briefly cover maintenance pricing otherwise you may decide to spend time scouring the website for maintenance pricing. To save you that effort here is the brief summary.

The software maintenance fee is 25% of the listed purchase price on our website. This excludes any special offer pricing. This means that if you received a volume discount when purchasing the software the maintenance fee automatically includes the same volume discount pricing.

The easiest way to purchase this will be by clicking the appropriate purchase buttons on the software. They will log you into the website, choose the correct product and correct number of users and price etc, all automatically. And when the purchase is complete the correct account and expiry details will be updated. Much easier than trying to do this any other way.


This new method of providing software updates will be less intrusive (much less email) and more customizable (you can choose the update schedule). We hope you will find this a useful improvement to our current software update schedule.

Be sure to look out for the next software update email from us. You’ll need to download that software update to get the version of the software that can self-update as described in this article. If you wish to continue receiving software updates you will need the next version of our software tools.

We welcome your thoughts and comments on these changes.

Panorama Theme by Themocracy