InPlaceHostingManager.GetManifestCompleted Event
Occurs when the deployment manifest has been downloaded to the local computer.
Assembly: System.Deployment (in System.Deployment.dll)
Use the Error property of GetManifestCompletedEventArgs to check whether GetManifestAsync completed successfully or returned an error. If Error is null, GetManifestAsync completed successfully, and you can call AssertApplicationRequirements.
The following code examples demonstrate how to call the GetManifestAsync method. The handler for the GetManifestCompleted event callback checks to see if the manifest download completed successfully, and if so, prompts the user with additional information about the application. If the user agrees to continue the installation, the handler calls DownloadApplicationAsync.
The following code examples assume that you have already defined and created an instance of InPlaceHostingManager named iphm.
Dim WithEvents iphm As InPlaceHostingManager = Nothing Private Sub InstallApplication(ByVal deployManifestUriStr As String) Try 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) Return Catch platformEx As PlatformNotSupportedException MessageBox.Show("Cannot install the application: This program requires Windows XP or higher. " & _ "Error: " & platformEx.Message) Return Catch argumentEx As ArgumentException MessageBox.Show("Cannot install the application: The deployment manifest URL supplied is not a valid URL." & _ "Error: " & argumentEx.Message) Return End Try iphm.GetManifestAsync() 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) Return End If ' Dig inside of the manifest and see if this application requests full trust. ' You can determine this by searching for a PermissionSet tag ' that has the Unrestricted attribute set to true. Dim isFullTrust As Boolean = CheckForFullTrust(e.ApplicationManifest) ' Verify this application can be installed. Try iphm.AssertApplicationRequirements() Catch assertEx As InvalidDeploymentException ' Security exception. Report the error to the user. MessageBox.Show("Cannot install the application due to a security error. " & "Error text: " & assertEx.Message) Return Catch ex As Exception MessageBox.Show("An error occurred while verifying the application. " & "Error text: " & ex.Message) Return 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() Else 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 Return End If ' Download the deployment manifest. ' We've added error handling here simply to be robust. Usually, ' this shouldn't throw an exception unless ' AssertApplicationRequirements() failed, or you did not call that method ' before calling this one. Try iphm.DownloadApplicationAsync() Catch downloadEx As Exception MessageBox.Show("Cannot initiate download of application. Error: " & downloadEx.Message) Return End Try End Sub 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 While appManifest.Read() ' Find the minimum required permission set. If (appManifest.NodeType = XmlNodeType.Element) Then If (appManifest.Name.Equals("applicationRequestMinimum")) Then ' Get the next two nodes, which are PermissionSet and ' defaultAssemblyRequest. ' TODO: Will there ALWAYS be just one PermissionSet here? If so, ' I can stick with the simple logic of just examining the ' PermissionSet node. Otherwise, I'll need to get ' defaultAssemblyRequest, and check the appropriate ' PermissionSet. While appManifest.Read() If (appManifest.Name.Equals("PermissionSet")) Then ' This is a required attribute - no need to sanity-check ' its existence. If (appManifest.GetAttribute("Unrestricted").Equals("true")) Then isFullTrust = True End If Exit While End If End While Exit While End If End If End While Return isFullTrust End Function
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.