InPlaceHostingManager Class


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Install or update a ClickOnce deployment on a computer.

Namespace:   System.Deployment.Application
Assembly:  System.Deployment (in System.Deployment.dll)


<SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted := True)>
Public Class InPlaceHostingManager
	Implements IDisposable


Creates a new instance of InPlaceHostingManager to download and install the specified browser-hosted application.

System_CAPS_pubmethodInPlaceHostingManager(Uri, Boolean)

Creates a new instance of InPlaceHostingManager to download and install the specified application, which can be either a stand-alone Windows Forms-based application or an application hosted in a Web browser.


Determines whether the ClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.


Determines whether the ClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.


Cancels an asynchronous download operation.


Releases all resources used by the InPlaceHostingManager.


Downloads an application update in the background.


Determines whether the specified object is equal to the current object.(Inherited from Object.)


Launches the ClickOnce application, if and only if it is a Windows Presentation Foundation-based application running in a Web browser.


Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)


Serves as the default hash function. (Inherited from Object.)


Downloads the deployment manifest of the ClickOnce application in the background, and raises an event when the operation has either completed or encountered an error.


Gets the Type of the current instance.(Inherited from Object.)


Creates a shallow copy of the current Object.(Inherited from Object.)


Returns a string that represents the current object.(Inherited from Object.)


Removes a previously installed user-defined component of an application.


Removes a ClickOnce application that includes the <customUX> element.


Occurs when the application has finished downloading to the local computer.


Occurs when there is a change in the status of an application or manifest download.


Occurs when the deployment manifest has been downloaded to the local computer.

You can use InPlaceHostingManager to write programs that install ClickOnce applications programmatically. For example, you can use this class in a controlled system management software (SMS) environment or in situations where you need a complex installation that performs a number of pre-installation or post-installation operations on the local computer. Generally, you will want to use the members of this class in a specific order:

  1. Create a new instance of InPlaceHostingManager.

  2. Download the deployment manifest by using GetManifestAsync.

  3. Check that the application can be run with the appropriate permissions by using AssertApplicationRequirements.

  4. Download and install the application by using DownloadApplicationAsync.

  • If you call any of these parameters out of order, they will throw an exception.

InPlaceHostingManager can install a ClickOnce application, but cannot execute it. Some methods in this class, such as Execute, are reserved for use when downloading a Windows Presentation Foundation-based application that runs inside a Web browser.

To use InPlaceHostingManager to download and install applications, you must make sure that the certificate for signing the ClickOnce applications you plan to install is already installed on client computers as a trusted publisher. For more information on trusted publishers, see Trusted Application Deployment Overview.


There is currently a product limitation that prevents InPlaceHostingManager from working correctly when you debug your code using Visual Studio. If you debug your application in Visual Studio by using the F5 key, the sample will throw mysterious exceptions when you call DownloadApplicationAsync. To debug using Visual Studio, start the application without debugging, and then attach the debugger. Alternatively, you can use another debugger, such as WinDbg.

The following code example shows how to use InPlaceHostingManager to install a ClickOnce application programmatically on a client computer.

    Dim WithEvents iphm As InPlaceHostingManager = Nothing

    Public Sub InstallApplication(ByVal deployManifestUriStr As String)
            Dim deploymentUri As New Uri(deployManifestUriStr)
            iphm = New InPlaceHostingManager(deploymentUri, False)
            MessageBox.Show("Created the object.")
        Catch uriEx As UriFormatException
            MessageBox.Show("Cannot install the application: " & _
                            "The deployment manifest URL supplied is not a valid URL." & _
                            "Error: " & uriEx.Message)
        Catch platformEx As PlatformNotSupportedException
            MessageBox.Show("Cannot install the application: " & _
                            "This program requires Windows XP or higher. " & _
                            "Error: " & platformEx.Message)
        Catch argumentEx As ArgumentException
            MessageBox.Show("Cannot install the application: " & _
                            "The deployment manifest URL supplied is not a valid URL." & _
                            "Error: " & argumentEx.Message)
        End Try

    End Sub

    Private Sub iphm_GetManifestCompleted(ByVal sender As Object, ByVal e As GetManifestCompletedEventArgs) Handles iphm.GetManifestCompleted
        ' Check for an error.
        If (e.Error IsNot Nothing) Then
            ' Cancel download and install.
            MessageBox.Show("Could not download manifest. Error: " & e.Error.Message)
        End If

        ' Dim isFullTrust As Boolean = CheckForFullTrust(e.ApplicationManifest)

        ' Verify this application can be installed.
            ' the true parameter allows InPlaceHostingManager
            ' to grant the permissions requested in the application manifest. 
        Catch ex As Exception
            MessageBox.Show("An error occurred while verifying the application. " & _
                            "Error text: " & ex.Message)
        End Try

        ' Use the information from GetManifestCompleted() to confirm 
        ' that the user wants to proceed.
        Dim appInfo As String = "Application Name: " & e.ProductName
        appInfo &= ControlChars.Lf & "Version: " & e.Version.ToString()
        appInfo &= ControlChars.Lf & "Support/Help Requests: "

        If Not (e.SupportUri Is Nothing) Then
            appInfo &= e.SupportUri.ToString()
            appInfo &= "N/A"
        End If

        appInfo &= ControlChars.Lf & ControlChars.Lf & _
            "Confirmed that this application can run with its requested permissions."

        ' If isFullTrust Then
        '    appInfo &= ControlChars.Lf & ControlChars.Lf & _
        '        "This application requires full trust in order to run."
        ' End If

        appInfo &= ControlChars.Lf & ControlChars.Lf & "Proceed with installation?"

        Dim dr As DialogResult = MessageBox.Show(appInfo, _
            "Confirm Application Install", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
        If dr <> System.Windows.Forms.DialogResult.OK Then
        End If

        ' Download the deployment manifest. 
        ' Usually, this shouldn't throw an exception unless 
        ' AssertApplicationRequirements() failed, or you did not call that method
        ' before calling this one.
        Catch downloadEx As Exception
            MessageBox.Show("Cannot initiate download of application. Error: " & downloadEx.Message)
        End Try
    End Sub

#If 0 Then
    Private Function CheckForFullTrust(ByVal appManifest As XmlReader) As Boolean
        Dim isFullTrust As Boolean = False

        If (appManifest Is Nothing) Then
            Throw New ArgumentNullException("appManifest cannot be null.")
        End If

        Dim xaUnrestricted As XAttribute
        xaUnrestricted = XDocument.Load(appManifest) _
            .Element("{urn:schemas-microsoft-com:asm.v1}assembly") _
            .Element("{urn:schemas-microsoft-com:asm.v2}trustInfo") _
            .Element("{urn:schemas-microsoft-com:asm.v2}security") _
            .Element("{urn:schemas-microsoft-com:asm.v2}applicationRequestMinimum") _
            .Element("{urn:schemas-microsoft-com:asm.v2}PermissionSet") _
            .Attribute("Unrestricted")  ' Attributes never have a namespace

        If xaUnrestricted Then
            If xaUnrestricted.Value = "true" Then
                Return True
            End If
        End If

        Return False
    End Function
#End If

    Private Sub iphm_DownloadProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs) Handles iphm.DownloadProgressChanged
        ' you can show percentage of task completed using e.ProgressPercentage
    End Sub

    Private Sub iphm_DownloadApplicationCompleted(ByVal sender As Object, ByVal e As DownloadApplicationCompletedEventArgs) Handles iphm.DownloadApplicationCompleted
        ' Check for an error.
        If (e.Error IsNot Nothing) Then
            ' Cancel download and install.
            MessageBox.Show("Could not download and install application. Error: " & e.Error.Message)
        End If

        ' Inform the user that their application is ready for use. 
        MessageBox.Show("Application installed! You may now run it from the Start menu.")
    End Sub

.NET Framework
Available since 2.0

Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top