I’m constantly being asked how to get the most out of a ThinApp package. Especially how to make the startup faster. There are many things you can do and most of them are application specific. I thought a blogs post providing the tweaks that generally provides the best effect for the lowest amount of time spent would be of interest.
- Get rid of the %Fonts% folder. We will virtualize any fonts being installed during the Setup Capture process. The problem is that it takes time to activate them on start of the application. Why not delete the fonts from the virtual environment and if the fonts are needed install them locally instead.
- Disable services. We support virtualizing most services. Many times are a service installed but not really needed to be started immediately by the application so why waste time waiting for it to start? Add AutoStartServices=0 under [BuildOptions] in your package.ini file and rebuild the package. Test if your application still runs and behaves as expected. Most of the times will you find that it does..
- Pre-compile .NET assemblies. If your application uses .Net is there a big chance you can save some valuable seconds by Pre-compiling .NET assemblies during Setup Capture (before running post installation snapshot). This will make the package larger but first launch quicker. Example on how to do it: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ngen.exe executequeueditems
- Not really ThinApp package specific but if you are having performance issues disable any Anti Virus software installed. Often will you see a great performance boost. Many AV scanners lock the file and can really mess with your performance of ThinApp packages. Make sure you exclude the location of your packages from scanning if you find AV being the issue.
There are many more things you can do but they all include more understanding of the application you packaged and would be more or less specific to that application. Some guidance:
- Clean out anything not necessary within the project. Why keep log files, installer cache and so on?
- Run Log Monitor and look for loops. Anything where it seems like the application is searching for something but cannot find it. Sometimes can you save some valuable milliseconds by providing what the application is looking for so it doesn’t have to wait for a timeout to happen.
- Make sure your Sandbox stays as small as possible. Know what ends up in it and why. Especially watch out for large files being copied into the Sandbox during first launch of the applications.