Application Updates
Previous  Top  Next

What happens if an application has auto-updating capabilities?

If an application has built-in auto updating capabilities, then it's update mechanism will still function when running under Thinstall. If the application downloads and runs an installer/patching program, this will run inside of the virtual environment and all of the changes made by the update software will be written to the sandbox. When the application restarts it will use the version of the EXE in the sandbox, not from the original package.

For example if you package Firefox 1.5 and run it, it will ask if you want to upgrade to Firefox 2.0 – if you click yes, it will download updates and write them to the sandbox and prompt you to restart. If you run the application it again, you will be running Firefox 2.0. By deleting the sandbox it will revert back to version 1.5.
Thinstall's Sandbox Merge utility can be used to merge changes made by an application's update mechanism back into the original package structure in order to build an EXE to redeploy to end-user machines.

Thinstall opens new possibilities for updating applications dynamically without requiring Administrator rights. For example .NET based applications that download new DLL files from the internet as part of their update process need to execute ngen.exe to generate Native Image assemblies in order to improve startup performance. Normally ngen.exe writes to HKLM and c:\windows, both of which are off-limits for non-Admin accounts. When running under Thinstall ngen.exe can install Native Image assemblies even on Guest user accounts, however these changes will be stored in a user-specific directory.

How can I update applications from a central location?

You may want to update the package on a central computer and push the changes to clients or central network shares as new Thinstalled EXE file.

The first step is to create a Thinstall project which contains the application updates. There are three main approaches for accomplishing this:

Approach #1: Apply patches during capture.  
This approach is very simple and fairly error-proof.  
Approach #2: Apply patches inside the virtual environment.  
If any application offers auto-update capabilities, it can update itself as described above. If the application update is in the form of a patch.exe, the patch program can be run in the virtual environment creating a cmd.exe entry point and running the patch program from there. The changes that occur during auto-update or manual update will go into the sandbox so you can easily roll-back to the original version by deleting the sandbox. You can apply patches in the virtual environment either on an end-user desktop machine or on a central packaging machine. In the second case, sandbox changes made by the patch or update can be merged back into the application using Thinstall's Sandbox merge utility.  
Approach #3: Apply patches to already captured project. If you only need to update a small set of specific files or registry keys, you can simply replace the files in your captured project. This approach is well suited for software developers who can integrate Thinstall builds into their normal "make" process.