As of version 5.1, Tarma Installer supports the installation of Windows side-by-side assemblies (in addition to .Net assemblies, which were supported from version 3.1 onwards). There are two sides to Windows side-by-side (SxS, for short) assemblies:
Both sides use XML-based manifests to describe themselves. For a large part, these manifests use the same syntax, but they differ in the following respect:
In Tarma Installer, both the assemblies proper and the applications that contain or are accompanied by manifests are represented by assembly objects. However, only proper assemblies are typically registered as such on the target system, which leads to another subdivision:
To make the use of SxS assemblies as easy as possible, Tarma Workshop supports several methods to add assemblies to your installation project:
The registration of public (global, shared) Windows side-by-side assemblies requires Administrator rights on all systems that support side-by-side assemblies. We therefore recommend that you set the Installation level on the Installer Options page to Administrator if your installer project contains any public side-by-side assemblies. Tarma Workshop will issue a BLD:W0035 diagnostic if this requirement is not met. If your project only installs private assemblies, Administrator rights are not required.
Although public side-by-side assemblies can be successfully installed and registered on Windows Vista, the system will not remove them during uninstallation. This appears to be a feature of Windows Vista, presumably to preserve system stability. The Tarma uninstallation log will show a TSU:A0052 message for each uninstalled assembly and a disposition=0 parameter, but the assembly itself will in fact remain on the system.
Private side-by-side assemblies are installed and uninstalled normally.
Tarma Installer's implementation of Windows side-by-side assemblies has one special feature: on Windows versions that do not support these assemblies, the files that make up a public assembly are automatically redirected to the appropriate Windows System folder (32-bit or 64-bit). This allows some degree of backward compatibility and will allow most applications to operate correctly on older systems. Some notes:
In practice, this means that side-by-side assemblies work as intended on Windows XP, Vista, and later systems. On Windows 2000 and earlier systems, a public assembly's files are available from the Windows System32 folder and will be installed and used as any system DLL by your application. You do not have to do anything to accomplish this; the installer performs the required adjustments automatically.
If you add an installation file to your Tarma Installer project and the file is or contains a Windows side-by-side manifest, then Tarma Workshop will detect this and will automatically create a corresponding assembly object to represent it. The file is then added to this assembly.
This goes some way towards defining an SxS assembly for installation, but it fails to do the following:
For this reason, we do not recommend this method except under the following circumstances:
If you decide to use this method, then you should be familiar with the Windows side-by-side assembly concepts.
The preferred method to add a Windows side-by-side assembly is as follows:
Tarma Workshop will analyze the manifest file, create a suitable assembly object to represent it, then add the manifest file itself, any member files, and the assembly's security catalog, if any. Furthermore, Tarma Workshop will warn you if you are trying to install a private assembly in the WinSxS folder (which is not allowed), and will offer to place any public assembly in the correct folder under WinSxS.
For this procedure to work correctly, you must ensure that the assembly's manifest file (with a .manifest file name extension), all of its member files, and the optional security catalog file are all located in the same folder. The security catalog file, if any, must have the same name as the manifest file, but with a .cat extension instead of .manifest. You must also set the Installation level on the Installer Options page to Administrator if you add a public side-by-side assembly. Tarma Workshop will issue a BLD:W0035 diagnostic if this requirement is not met.
This is the recommended method to add a side-by-side assembly to your project, unless the assembly happens to be one of the predefined ones (see next section).
Because the most often installed side-by-side assemblies are the Microsoft C/C++ runtime libraries, we have predefined a number of project items that you can add to your Tarma Installer project to get the correct files and settings. These project items work just like MSI merge modules, but are much less complicated and error prone.
To use this method, do the following:
When the project item is added to your project, it will be selected in the project for your inspection. You do not (and should not) have to change anything. If at any point you want to remove the item and its contents, then simply remove it as you would any component or assembly and be sure to select Delete this item and all referenced items in the Delete Object dialog box that asks for confirmation.
The following add-ons related to Windows side-by-side assemblies are currently available from the download page on the Tarma web site, http://www.tarma.com/products/tin/download.htm. New ones may be added from time to time. These add-ons require Tarma Installer 5.1 or later to be present on your system. You only have to download and install them once, even if you update the Tarma Installer itself in the mean time.
| Add-on | Version | Description |
|---|---|---|
| VC2005 Runtime Libraries, amd64 version | 8.0.50727.42 | Microsoft Visual Studio 2005 C/C++ runtime libraries for amd64 processors. Note: This is version 8.0.50727.42 of the libraries, which have been superseded by the SP1 version. If your VC2005 environment is up to date, you should use the SP1 versions instead. |
| VC2005 Runtime Libraries, x86 version | 8.0.50727.42 | Microsoft Visual Studio 2005 C/C++ runtime libraries for x86 processors. Note: This is version 8.0.50727.42 of the libraries, which have been superseded by the SP1 version. If your VC2005 environment is up to date, you should use the SP1 versions instead. |
| VC2005-SP1 Runtime Libraries, amd64 version | 8.0.50727.762 | Microsoft Visual Studio 2005 C/C++ runtime libraries for amd64 processors, SP1 update. |
| VC2005-SP1 Runtime Libraries, x86 version | 8.0.50727.762 | Microsoft Visual Studio 2005 C/C++ runtime libraries for x86 processors, SP1 update. |
| VC2008 Runtime libraries, amd64 version | 9.0.21022.8 | Microsoft Visual Studio 2008 C/C++ runtime libraries for amd64 processors. Note: These libraries will only be installed on Windows 2000 or later systems with amd64 processors. |
| VC2008 Runtime libraries, x86 version | 9.0.21022.8 | Microsoft Visual Studio 2008 C/C++ runtime libraries for x86 processors. Note: These libraries will only be installed on Windows 2000 or later systems. |
After installing one or more of the above add-ons, you will find the following project items if you use the File > Import > Project Items... command in your Tarma Installer project. (There may be other project items, depending on what other add-ons you have installed.)
Note: For best results if you add any of the amd64 variants to your installer project, your project should be a 64-bit project or a combined 32-bit and 64-bit project. If necessary, use the Insert 64-bit support project item before adding any of the amd64 library variants. You only need to add amd64 variants if your application is compiled for that processor and depends on its assemblies.
| Project item | Description |
|---|---|
| VC2005 All libraries (amd64) | Inserts all VC2005 runtime libraries for amd64 processors into your project: ATL, CRT, MFC, MFC localizations, MSDIA, and OpenMP. This is equivalent to the Microsoft vcredist_x64 redistributable. Note: This is version 8.0.50727.42 of the libraries, which have been superseded by the SP1 version. If your VC2005 environment is up to date, you should use the SP1 versions instead. |
| VC2005 All libraries (x86) | Inserts all VC2005 runtime libraries for x86 processors into your project: ATL, CRT, MFC, MFC localizations, MSDIA, and OpenMP. This is equivalent to the Microsoft vcredist_x86 redistributable. Note: This is version 8.0.50727.42 of the libraries, which have been superseded by the SP1 version. If your VC2005 environment is up to date, you should use the SP1 versions instead. |
| Other VC2005 items | The other VC2005 items insert individual library assemblies into your project; this may be preferred if your application only uses some of the runtime libraries (for example, only ATL or CRT). Note: This is version 8.0.50727.42 of the libraries, which have been superseded by the SP1 version. If your VC2005 environment is up to date, you should use the SP1 versions instead. |
| VC2005-SP1 All libraries (amd64) | Inserts all VC2005 SP1 runtime libraries for amd64 processors into your project: ATL, CRT, MFC, MFC localizations, MSDIA, and OpenMP. This is equivalent to the Microsoft vcredist_x64 SP1 redistributable. |
| VC2005-SP1 All libraries (x86) | Inserts all VC2005 SP1 runtime libraries for x86 processors into your project: ATL, CRT, MFC, MFC localizations, MSDIA, and OpenMP. This is equivalent to the Microsoft vcredist_x86 SP1 redistributable. |
| Other VC2005-SP1 items | The other VC2005-SP1 items insert individual library assemblies into your project; this may be preferred if your application only uses some of the runtime libraries (for example, only ATL or CRT). |
| VC2008 All libraries (amd64) | Inserts all VC2008 runtime libraries for amd64 processors into your project: ATL, CRT, MFC, MFC localizations, MSDIA, and OpenMP. This is equivalent to the Microsoft vcredist_x64 redistributable. Note: These libraries will only be installed on Windows 2000 or later systems with amd64 processors. |
| VC2008 All libraries (x86) | Inserts all VC2008 runtime libraries for x86 processors into your project: ATL, CRT, MFC, MFC localizations, MSDIA, and OpenMP. This is equivalent to the Microsoft vcredist_x86 redistributable. Note: These libraries will only be installed on Windows 2000 or later systems. |
| Other VC2008 items | The other VC2008 items insert individual library assemblies into your project; this may be preferred if your application only uses some of the runtime libraries (for example, only ATL or CRT). Note: These libraries will only be installed on Windows 2000 or later systems. |