InPlaceHostingManager.AssertApplicationRequirements Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Determines whether the ClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.
Overloads
AssertApplicationRequirements() |
Determines whether the ClickOnce application has the appropriate permissions and platform dependencies to run on the local computer. |
AssertApplicationRequirements(Boolean) |
Determines whether the ClickOnce application has the appropriate permissions and platform dependencies to run on the local computer. |
AssertApplicationRequirements()
Determines whether the ClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.
public:
void AssertApplicationRequirements();
public void AssertApplicationRequirements ();
member this.AssertApplicationRequirements : unit -> unit
Public Sub AssertApplicationRequirements ()
Exceptions
Raised if this method is called before the GetManifestAsync() method.
Examples
The following code example demonstrates the use of AssertApplicationRequirements, which it calls in the body of a successful GetManifestCompleted event handler.
void iphm_GetManifestCompleted(object sender, GetManifestCompletedEventArgs e)
{
// Check for an error.
if (e.Error != null)
{
// Cancel download and install.
MessageBox.Show("Could not download manifest. Error: " + e.Error.Message);
return;
}
// bool isFullTrust = CheckForFullTrust(e.ApplicationManifest);
// Verify this application can be installed.
try
{
// the true parameter allows InPlaceHostingManager
// to grant the permissions requested in the applicaiton manifest.
iphm.AssertApplicationRequirements(true) ;
}
catch (Exception ex)
{
MessageBox.Show("An error occurred while verifying the application. " +
"Error: " + ex.Message);
return;
}
// Use the information from GetManifestCompleted() to confirm
// that the user wants to proceed.
string appInfo = "Application Name: " + e.ProductName;
appInfo += "\nVersion: " + e.Version;
appInfo += "\nSupport/Help Requests: " + (e.SupportUri != null ?
e.SupportUri.ToString() : "N/A");
appInfo += "\n\nConfirmed that this application can run with its requested permissions.";
// if (isFullTrust)
// appInfo += "\n\nThis application requires full trust in order to run.";
appInfo += "\n\nProceed with installation?";
DialogResult dr = MessageBox.Show(appInfo, "Confirm Application Install",
MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (dr != System.Windows.Forms.DialogResult.OK)
{
return;
}
// Download the deployment manifest.
iphm.DownloadProgressChanged += new EventHandler<DownloadProgressChangedEventArgs>(iphm_DownloadProgressChanged);
iphm.DownloadApplicationCompleted += new EventHandler<DownloadApplicationCompletedEventArgs>(iphm_DownloadApplicationCompleted);
try
{
// Usually this shouldn't throw an exception unless AssertApplicationRequirements() failed,
// or you did not call that method before calling this one.
iphm.DownloadApplicationAsync();
}
catch (Exception downloadEx)
{
MessageBox.Show("Cannot initiate download of application. Error: " +
downloadEx.Message);
return;
}
}
/*
private bool CheckForFullTrust(XmlReader appManifest)
{
if (appManifest == null)
{
throw (new ArgumentNullException("appManifest cannot be null."));
}
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 != null)
if (xaUnrestricted.Value == "true")
return true;
return false;
}
*/
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
' Dim isFullTrust As Boolean = CheckForFullTrust(e.ApplicationManifest)
' Verify this application can be installed.
Try
' the true parameter allows InPlaceHostingManager
' to grant the permissions requested in the application manifest.
iphm.AssertApplicationRequirements(True)
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.
' 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
#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
Remarks
You must call AssertApplicationRequirements after GetManifestAsync returns successfully. You must not call DownloadApplicationAsync unless you call AssertApplicationRequirements, and it returns without error.
Applies to
AssertApplicationRequirements(Boolean)
Determines whether the ClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.
public:
void AssertApplicationRequirements(bool grantApplicationTrust);
public void AssertApplicationRequirements (bool grantApplicationTrust);
member this.AssertApplicationRequirements : bool -> unit
Public Sub AssertApplicationRequirements (grantApplicationTrust As Boolean)
Parameters
- grantApplicationTrust
- Boolean
If true
, the application will attempt to elevate its permissions to the required level.
Remarks
If grantApplicationTrust
is true
, InPlaceHostingManager will grant the application elevated permissions if it requires them. This is only possible if InPlaceHostingManager is able to grant those permissions. For example, if a ClickOnce application is being installed as part of a larger package and the installer has been granted full trust, InPlaceHostingManager will be able to grant the ClickOnce application full trust. If grantApplicationTrust
is false
, the application will not be granted any permissions.