MsiProvideAssembly (msi)
Last changed: 65.54.188.149

.
Summary
Returns the full path to a Windows Installer component containing an assembly. The function prompts for a source and performs any necessary installation. MsiProvideAssembly also increments the usage count for the feature.

C# Signature:

[DllImport("msi.dll", CharSet=CharSet.Unicode)]
static extern int MsiProvideAssembly(string szAssemblyName, string szAppContext,
   int dwInstallMode, int dwAssemblyInfo,
   [Out] StringBuilder lpPathBuf, ref int pcchPathBuf);

Notes:

This function is available starting with Windows Installer version 2.0.

Tips & Tricks:

Please add some!

Sample Code:

The following method will only work if your assembly was installed via Windows Installer:

public static string EnsureAssemblyIsInstalled(string assemblyName, string installPath)
{
    int buffer = 1024;
    StringBuilder path = new StringBuilder(1024);                
    uint error = UnsafeInterop.MsiProvideAssembly(assemblyName, installPath, 0, 0, path, ref buffer);
    if (error == 0)
        return path.ToString();     // Already installed or successfully installed
    // Failed to install
    return null;            
}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation