InPlaceHostingManager.AssertApplicationRequirements 方法

定義

判斷 ClickOnce 應用程式是否有適當的使用權限和平台相依性,得以在本機電腦上執行。Determines whether the ClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.

多載

AssertApplicationRequirements()

判斷 ClickOnceClickOnce 應用程式是否有適當的使用權限和平台相依性,得以在本機電腦上執行。Determines whether the ClickOnceClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.

AssertApplicationRequirements(Boolean)

判斷 ClickOnceClickOnce 應用程式是否有適當的使用權限和平台相依性,得以在本機電腦上執行。Determines whether the ClickOnceClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.

AssertApplicationRequirements()

判斷 ClickOnceClickOnce 應用程式是否有適當的使用權限和平台相依性,得以在本機電腦上執行。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 ()

例外狀況

GetManifestAsync() 方法之前呼叫這個方法時引發。Raised if this method is called before the GetManifestAsync() method.

範例

下列程式碼範例將示範如何使用 AssertApplicationRequirements ,它會在成功事件處理常式的主體中呼叫 GetManifestCompletedThe 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

備註

您必須在 AssertApplicationRequirements 成功傳回之後呼叫 GetManifestAsyncYou must call AssertApplicationRequirements after GetManifestAsync returns successfully. DownloadApplicationAsync除非您呼叫,否則您不得呼叫 AssertApplicationRequirements ,而且它會傳回而不會發生錯誤。You must not call DownloadApplicationAsync unless you call AssertApplicationRequirements, and it returns without error.

AssertApplicationRequirements(Boolean)

判斷 ClickOnceClickOnce 應用程式是否有適當的使用權限和平台相依性,得以在本機電腦上執行。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)

參數

grantApplicationTrust
Boolean

如果為 true,應用程式便會嘗試將其使用權限提高至必要的層級。If true, the application will attempt to elevate its permissions to the required level.

備註

如果 grantApplicationTrusttrueInPlaceHostingManager 將會授與應用程式較高的許可權(如果需要的話)。If grantApplicationTrust is true, InPlaceHostingManager will grant the application elevated permissions if it requires them. 只有在 InPlaceHostingManager 能夠授與這些許可權時,才可能發生這種情況。This is only possible if InPlaceHostingManager is able to grant those permissions. 例如,如果 ClickOnceClickOnce 應用程式是安裝為較大套件的一部分,而安裝程式已被授與完全信任, InPlaceHostingManager 就能夠授與 ClickOnceClickOnce 應用程式完全信任。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. 如果 grantApplicationTrustfalse ,應用程式將不會被授與任何許可權。If grantApplicationTrust is false, the application will not be granted any permissions.

適用於