Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

MsiProvideAssembly (msi)
 
.
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.

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.Auto)]
[DllImport("msi.dll")]
static extern uint MsiProvideAssembly(string assembly, string context, uint mode, int info, System.Text.StringBuilder path, ref int pathSize);

VB Signature:

Declare Function MsiProvideAssembly Lib "msi.dll" (TODO) As TODO

User-Defined Types:

None.

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:

// Only works if application 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:

MSI interop library

Do you know one? Please contribute it!

http://sourceforge.net/project/showfiles.php?group_id=40188&package_id=110212

Documentation

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

 
Access PInvoke.net directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version
Revisions