Isolated Applications - Technical Desription

From Microsoft's MSDN:


"Developers are encouraged to design isolated applications and to update existing applications into isolated applications for the following reasons:

Isolated applications are more stable and reliably updated because they are unaffected by the installation, removal, or upgrading of other applications on the system.

Isolated applications can be designed so that they always run using the same assembly versions with which they were built and tested.

Isolated applications can use functionality provided by the side-by-side assemblies made available by Microsoft. For more information, see Supported Microsoft Side-by-side Assemblies.

Isolated applications are not tied to the shipping schedule of their side-by-side assemblies because applications and administrators can update the configuration after deployment without having to reinstall the application. This would not apply in the case where only one version of the assembly is being made available.

A fully isolated application may be installed by using the xcopy command. Windows Installer can also be used to install an isolated application without impact to the registry. For more information, see Installation of Win32 Assemblies."


An isolated application is a process that uses side-by-side private COM (ActiveX .ocx or .dll files) components that resides in the application folder and so is not available to any other application. To do this the isolated application must use an application manifest file that contains dependency information about each COM component used by the application. In an isolated application with private COM components, the components will not be replaced when another application installs or uninstalls the same COM components on the machine. This also eliminates versioning conflicts and means that you will not need to register the components with the system by e.g. using the regsvr32.exe program. Two things are needed for this technique to work.


a) The dependency information about each COM component needs to exist in the application's manifest file - or in the executable itself.

b) The COM component files must exist in the same folder as the application.


This program helps you to achieve both a) and b). It will givee you a more robust program that reduces support calls significantly.


Note: A Manifest Fragment File is a text file that contains dependency information about a particular COM component and version.



What is a COM component?


A (OLE) Control Extension (ActiveX .ocx or .dll file) is an application extension required by excutable files (.exe) to perform specific program functions. An example is the CodeJock suite of OCX components, like the CommandBars component that makes it easy for a deveper to create comprehensive, fully customizable menus and toolbars that looks fantastic. The component was introduced with Visual DataFlex 14. Another example is the CodeJock ReportControl that is the foundation for the new grid and lookup classes, which are much more powerful, rich in features and looks way better compared to the old classes. The classes and the CodeJock ReportObject component were introduced with Visual DataFlex 16.


The old way for Windows to know which COM (OCX/DLL) components and versions that were available on a computer was to use the Windows command regsvr32 to register them to the Windows registry. However, this is error prone and makes your application vulnarable to uninstallations made by other programs using the same component. Suddenly your application doesn't function anymore and the user has no idea why.


The new way of handling COM components was introduced with Windows XP and is by Microsoft called "Isolated applications and Side-by-side assemblies". What it means is that you can have your application installed in one folder with all necessary programs and components - all in one place, without any interference from other programs. Your application has every bit of information it needs to operate safe and secure. Thus the technique is much better and makes for more robust installations than the old regsvr32 technique as it isolates your application from other applications that gets installed or uninstalled - thus generating far less support calls and happier users!