InPlaceHostingManager.AssertApplicationRequirements Metodo

Definizione

Determina se l'applicazione ClickOnce ha le autorizzazioni e le dipendenze di piattaforma appropriate per l'esecuzione nel computer locale.Determines whether the ClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.

Overload

AssertApplicationRequirements()

Determina se l'applicazione ClickOnceClickOnce dispone delle autorizzazioni e delle dipendenze di piattaforma appropriate per l'esecuzione sul computer locale.Determines whether the ClickOnceClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.

AssertApplicationRequirements(Boolean)

Determina se l'applicazione ClickOnceClickOnce dispone delle autorizzazioni e delle dipendenze di piattaforma appropriate per l'esecuzione sul computer locale.Determines whether the ClickOnceClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.

AssertApplicationRequirements()

Determina se l'applicazione ClickOnceClickOnce dispone delle autorizzazioni e delle dipendenze di piattaforma appropriate per l'esecuzione sul computer locale.Determines whether the ClickOnceClickOnce 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 ()

Eccezioni

Generata se questo metodo viene chiamato prima del metodo GetManifestAsync().Raised if this method is called before the GetManifestAsync() method.

Esempi

Nell'esempio di codice riportato di seguito viene AssertApplicationRequirementsillustrato l'utilizzo di, che chiama nel corpo di GetManifestCompleted un gestore eventi riuscito.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

Commenti

È necessario chiamare AssertApplicationRequirements il GetManifestAsync risultato dopo che è stato restituito correttamente.You must call AssertApplicationRequirements after GetManifestAsync returns successfully. Non è necessario chiamare DownloadApplicationAsync , a meno che AssertApplicationRequirementsnon si chiami e venga restituito senza errori.You must not call DownloadApplicationAsync unless you call AssertApplicationRequirements, and it returns without error.

AssertApplicationRequirements(Boolean)

Determina se l'applicazione ClickOnceClickOnce dispone delle autorizzazioni e delle dipendenze di piattaforma appropriate per l'esecuzione sul computer locale.Determines whether the ClickOnceClickOnce 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)

Parametri

grantApplicationTrust
Boolean

Se true, l'applicazione tenterà di elevare le autorizzazioni al livello richiesto.If true, the application will attempt to elevate its permissions to the required level.

Commenti

Se grantApplicationTrust InPlaceHostingManager è true, concederà all'applicazione autorizzazioni elevate, se necessario.If grantApplicationTrust is true, InPlaceHostingManager will grant the application elevated permissions if it requires them. Questa operazione è possibile solo InPlaceHostingManager se è in grado di concedere tali autorizzazioni.This is only possible if InPlaceHostingManager is able to grant those permissions. Se, ad esempio, ClickOnceClickOnce un'applicazione viene installata come parte di un pacchetto di dimensioni maggiori e al programma di installazione è stata InPlaceHostingManager concessa l'attendibilità totale ClickOnceClickOnce , sarà in grado di concedere l'attendibilità totale dell'applicazione.For example, if a ClickOnceClickOnce 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 ClickOnceClickOnce application full trust. Se grantApplicationTrust èfalse, all'applicazione non verranno concesse autorizzazioni.If grantApplicationTrust is false, the application will not be granted any permissions.

Si applica a