MsiAssembly Table

The MsiAssembly Table specifies Windows Installer settings for Microsoft .NET Framework assemblies and Win32 assemblies. For more information, see Installation of Assemblies to the Global Assembly Cache and Installation of Win32 Assemblies.

On Windows XP, Windows Installer can install Win32 assemblies as side-by-side assemblies. For more information, see the Side-by-Side Assembly API.

Windows 2000: This feature is not supported.

The MsiAssembly Table has the following columns.

Column Type Key Nullable
Component_ Identifier Y N
Feature_ Identifier N N
File_Manifest Identifier N Y
File_Application Identifier N Y
Attributes Integer N Y




The key into the Component Table that specifies the Windows Installer component that contains this assembly.

The value in this field must not be set to null. The component KeyPath field in the Component Table must not be null.

For Win32 assemblies, the component KeyPath cannot be the manifest file that is specified in File_Manifest. The manifest can be the keypath for a .NET Framework or policy assembly.


Key into the Feature Table.

When the assembly must be installed by a feature installation, Windows Installer installs the feature pointed to by this field.


An external key into the File Table that specifies the file that contains the manifest for a .NET Framework assembly or Win32 assembly.

For a Win32 assembly, do not specify this file as the component key path file in the KeyPath field of the Component Table.


To install the assembly at a private location, enter the key path file for the assembly component in this field.

This is the value that appears in the KeyPath field of the Component Table. The Installer can then install the assembly to the directory structure of the component that is specified in the Directory Table. This field must be null if the assembly is to be installed into the global assembly cache.


Enter a value of 1 (one) for a Win32 assembly. Enter a value of 0 (zero) for a .NET Framework assembly.

If the Attributes column is NULL, the Installer treats the assembly as a .NET Framework assembly.


If there is at least one entry in the MsiAssembly Table, the InstallExecuteSequence Table must contain the MsiPublishAssemblies Action, and MsiUnpublishAssemblies Action.

Because assemblies cannot be rolled back after they are committed, Windows Installer uses a two-step installation process. The interfaces to the assemblies are created during the installation operations that are generated by the MsiPublishAssemblies Action.

The assemblies are not committed until successful execution of the InstallFinalize Action. This means that if you author a custom action or resource that relies on the assembly, it must be sequenced after the InstallFinalize Action. For example, if you need to start a service that depends on an assembly in the Global Assembly Cache (GAC), you must schedule the starting of that service after the InstallFinalize Action. This means you cannot use the ServiceControl Table to start the service, instead you must use a custom action that is sequenced after InstallFinalize.