ThinApp packagers are working with three different virtual filesystems. The first one is the project folder content. Here, a packager can change the .ini
files, replace the old .dll
files with new updated ones, and delete or add any files and folders needed. The second virtual filesystem is created when compiling the project; an exact copy of the filesystem found in the project folder will be compiled into the package as a read-only version of the virtual filesystem. There is no way an end user can modify the content of the package. When using the application, a third version of the filesystem is created in the sandbox: the read and write version of the filesystem.
The complete filesystem known to the virtualized application is a combination of the native (physical) filesystem on the machine, the read-only virtual filesystem stored in the package, and the read and write version stored in the sandbox. If there is a conflict between the native filesystem and the virtual one, the virtual environment will win and the virtual file will be the one presented to the application. If there is a conflict between the sandbox content and the read-only filesystem, then the sandbox content will win.
All folders in the root of the project folder (excluding Support
and bin
folders) are in a variable format, for example, %AppData%
. These variables are called folder macros
and are similar to variables used in the operating system. Folder macros point to predefined locations. These locations may vary depending on the language of the operating system or which version of the Windows operating system you're running the package on. Some folder macros may use the same names as the ones in the operating system but they are different from one another. Especially when using VBScripts built into the packages, it is important to understand that there is a difference. It's the folder macros that allow a package to be portable between different operating systems.

The previous screenshot shows a project folder showing some folder macros.
%AppData%
refers to the user's roaming profile, which is mostly used to save user settings. Executing a ThinApp package on a Windows XP machine, the %AppData%
will refer to C:\Documents and Settings\UserName\Application Data
. Executing the same package on a Windows 7 machine, %AppData%
will refer to C:\Users\UserName\AppData\Roaming
. Since ThinApp uses %AppData%
, the user settings will follow the user no matter which OS the package is executed on.
A list of all folder macros can be found in References at the end of this book.