InPlaceHostingManager 클래스

정의

컴퓨터에 ClickOnce 배포를 설치하거나 업데이트합니다.Install or update a ClickOnce deployment on a computer.

public ref class InPlaceHostingManager : IDisposable
public class InPlaceHostingManager : IDisposable
type InPlaceHostingManager = class
    interface IDisposable
Public Class InPlaceHostingManager
Implements IDisposable
상속
InPlaceHostingManager
구현

예제

다음 코드 예제를 사용 하는 방법을 보여 줍니다 InPlaceHostingManager 를 설치 하는 ClickOnceClickOnce 클라이언트 컴퓨터에서 프로그래밍 방식으로 애플리케이션입니다.The following code example shows how to use InPlaceHostingManager to install a ClickOnceClickOnce application programmatically on a client computer.

InPlaceHostingManager iphm = null;

public void InstallApplication(string deployManifestUriStr)
{
    try
    {
        Uri deploymentUri = new Uri(deployManifestUriStr);
        iphm = new InPlaceHostingManager(deploymentUri, false);
    }
    catch (UriFormatException uriEx)
    {
        MessageBox.Show("Cannot install the application: " + 
            "The deployment manifest URL supplied is not a valid URL. " +
            "Error: " + uriEx.Message);
        return;
    }
    catch (PlatformNotSupportedException platformEx)
    {
        MessageBox.Show("Cannot install the application: " + 
            "This program requires Windows XP or higher. " +
            "Error: " + platformEx.Message);
        return;
    }
    catch (ArgumentException argumentEx)
    {
        MessageBox.Show("Cannot install the application: " + 
            "The deployment manifest URL supplied is not a valid URL. " +
            "Error: " + argumentEx.Message);
        return;
    }

    iphm.GetManifestCompleted += new EventHandler<GetManifestCompletedEventArgs>(iphm_GetManifestCompleted);
    iphm.GetManifestAsync();
}

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;
}
*/

void iphm_DownloadApplicationCompleted(object sender, DownloadApplicationCompletedEventArgs e)
{
    // Check for an error.
    if (e.Error != null)
    {
        // Cancel download and install.
        MessageBox.Show("Could not download and install application. Error: " + e.Error.Message);
        return;
    }

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

void iphm_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
    // you can show percentage of task completed using e.ProgressPercentage
}
    Dim WithEvents iphm As InPlaceHostingManager = Nothing

    Public 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

        ' 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

    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)
            Return
        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

설명

사용할 수 있습니다 InPlaceHostingManager 설치 프로그램을 작성할 ClickOnceClickOnce 애플리케이션 프로그래밍 방식으로 합니다.You can use InPlaceHostingManager to write programs that install ClickOnceClickOnce applications programmatically. 예를 들어, 다양 한 로컬 컴퓨터의 설치 전 또는 설치 후 작업을 수행 하는 복잡 한 설치 해야 하는 경우 또는 제어 된 시스템 관리 소프트웨어 (SMS) 환경에서이 클래스를 사용할 수 있습니다.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. InPlaceHostingManager의 새 인스턴스를 만듭니다.Create a new instance of InPlaceHostingManager.

  2. 배포 매니페스트를 사용 하 여 다운로드 GetManifestAsync합니다.Download the deployment manifest by using GetManifestAsync.

  3. 애플리케이션이 사용 하 여 적절 한 권한을 사용 하 여 실행할 수 있는 검사 AssertApplicationRequirements합니다.Check that the application can be run with the appropriate permissions by using AssertApplicationRequirements.

  4. 다운로드 하 고 사용 하 여 애플리케이션 설치 DownloadApplicationAsync합니다.Download and install the application by using DownloadApplicationAsync.

  • 이러한 매개 변수 순서가 호출 하는 경우, 예외를 throw 됩니다.If you call any of these parameters out of order, they will throw an exception.

InPlaceHostingManager 설치할 수는 ClickOnceClickOnce 애플리케이션을 실행할 수 없습니다. 하지만 합니다.InPlaceHostingManager can install a ClickOnceClickOnce application, but cannot execute it. 이 메서드와 클래스와 같이 Execute, 웹 브라우저 내에서 실행 되는 Windows Presentation Foundation 기반 애플리케이션을 다운로드 하는 경우에 사용 하도록 예약 됩니다.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.

사용 하도록 InPlaceHostingManager 를 다운로드 하 고 애플리케이션을 설치 해야 하는 서명 인증서를 ClickOnceClickOnce 설치 하려는 애플리케이션에 이미 설치 되어 클라이언트 컴퓨터를 신뢰할 수 있는 게시자로 합니다.To use InPlaceHostingManager to download and install applications, you must make sure that the certificate for signing the ClickOnceClickOnce 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.

참고

현재 없는 제품 제한이 있는지 InPlaceHostingManager Visual Studio를 사용 하 여 코드를 디버그할 때 제대로 작동 합니다.There is currently a product limitation that prevents InPlaceHostingManager from working correctly when you debug your code using Visual Studio. F5 키를 사용 하 여 Visual Studio에서 애플리케이션을 디버깅 하는 경우 호출 하는 경우 샘플 알 수 없는 예외를 throw 합니다 DownloadApplicationAsync합니다.If you debug your application in Visual Studio by using the F5 key, the sample will throw mysterious exceptions when you call DownloadApplicationAsync. Visual Studio를 사용 하 여 디버그, 디버깅 하지 않고 애플리케이션을 시작 하 고 디버거를 연결 합니다.To debug using Visual Studio, start the application without debugging, and then attach the debugger. 또는, WinDbg와 같은 다른 디버거를 사용할 수 있습니다.Alternatively, you can use another debugger, such as WinDbg.

생성자

InPlaceHostingManager(Uri)

InPlaceHostingManager의 새 인스턴스를 만들어 브라우저에 호스팅되는 지정한 애플리케이션을 다운로드하고 설치합니다.Creates a new instance of InPlaceHostingManager to download and install the specified browser-hosted application.

InPlaceHostingManager(Uri, Boolean)

InPlaceHostingManager의 새 인스턴스를 만들어 지정된 애플리케이션을 다운로드하고 설치합니다. 이 애플리케이션은 독립 실행형 Windows Forms 기반 애플리케이션이나 웹 브라우저에 호스팅되는 애플리케이션일 수 있습니다.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.

메서드

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.

CancelAsync()

비동기 다운로드 작업을 취소합니다.Cancels an asynchronous download operation.

Dispose()

InPlaceHostingManager에서 사용하는 모든 리소스를 해제합니다.Releases all resources used by the InPlaceHostingManager.

DownloadApplicationAsync()

백그라운드에서 애플리케이션 업데이트를 다운로드합니다.Downloads an application update in the background.

Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
Execute()

웹 브라우저에서 실행되는 Windows Presentation Foundation 기반 애플리케이션인 경우에만 ClickOnceClickOnce 애플리케이션을 시작합니다.Launches the ClickOnceClickOnce application, if and only if it is a Windows Presentation Foundation-based application running in a Web browser.

GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetManifestAsync()

백그라운드에서 ClickOnceClickOnce 애플리케이션의 배포 매니페스트를 다운로드하고, 작업이 완료되거나 오류가 발생하면 이벤트를 발생시킵니다.Downloads the deployment manifest of the ClickOnceClickOnce application in the background, and raises an event when the operation has either completed or encountered an error.

GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)
UninstallCustomAddIn(String)

이전에 설치한 애플리케이션의 사용자 정의 구성 요소를 제거합니다.Removes a previously installed user-defined component of an application.

UninstallCustomUXApplication(String)

<customUX> 요소를 포함하는 ClickOnceClickOnce 애플리케이션을 제거합니다.Removes a ClickOnceClickOnce application that includes the <customUX> element.

이벤트

DownloadApplicationCompleted

애플리케이션 다운로드가 로컬 컴퓨터에서 완료된 경우 발생합니다.Occurs when the application has finished downloading to the local computer.

DownloadProgressChanged

애플리케이션 또는 매니페스트 다운로드의 상태가 변경될 때 발생합니다.Occurs when there is a change in the status of an application or manifest download.

GetManifestCompleted

배포 매니페스트가 로컬 컴퓨터에 다운로드되었을 때 발생합니다.Occurs when the deployment manifest has been downloaded to the local computer.

적용 대상