[DllImport("msi.dll", CharSet=CharSet.Unicode)]
static extern int MsiProvideAssembly(string szAssemblyName, string szAppContext,
int dwInstallMode, int dwAssemblyInfo,
[Out] StringBuilder lpPathBuf, ref int pcchPathBuf);
This function is available starting with Windows Installer version 2.0.
Please add some!
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;
}
Do you know one? Please contribute it!