InPlaceHostingManager InPlaceHostingManager InPlaceHostingManager InPlaceHostingManager Class

定義

コンピューターに 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
継承
InPlaceHostingManagerInPlaceHostingManagerInPlaceHostingManagerInPlaceHostingManager
実装

次のコード例は、使用する方法を示しています。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.

  • 誤順序の呼び出すこれらのパラメーターのいずれか、それらは例外をスローします。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、Web ブラウザー内で実行される 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 でアプリケーションをデバッグする場合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(Uri) InPlaceHostingManager(Uri) InPlaceHostingManager(Uri)

InPlaceHostingManager の新しいインスタンスを作成し、ブラウザーでホストされる指定したアプリケーションをダウンロードおよびインストールします。Creates a new instance of InPlaceHostingManager to download and install the specified browser-hosted application.

InPlaceHostingManager(Uri, Boolean) InPlaceHostingManager(Uri, Boolean) InPlaceHostingManager(Uri, Boolean) InPlaceHostingManager(Uri, Boolean)

InPlaceHostingManager の新しいインスタンスを作成し、スタンドアロンの Windows フォーム ベースのアプリケーションまたは Web ブラウザーでホストされるアプリケーションのいずれかにできる、指定したアプリケーションをダウンロードおよびインストールします。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() AssertApplicationRequirements() AssertApplicationRequirements() AssertApplicationRequirements()

ClickOnceClickOnce アプリケーションが、ローカル コンピューターで動作するための適切なアクセス許可とプラットフォームの依存関係を備えているかどうかを判断します。Determines whether the ClickOnceClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.

AssertApplicationRequirements(Boolean) AssertApplicationRequirements(Boolean) AssertApplicationRequirements(Boolean) AssertApplicationRequirements(Boolean)

ClickOnceClickOnce アプリケーションが、ローカル コンピューターで動作するための適切なアクセス許可とプラットフォームの依存関係を備えているかどうかを判断します。Determines whether the ClickOnceClickOnce application has the appropriate permissions and platform dependencies to run on the local computer.

CancelAsync() CancelAsync() CancelAsync() CancelAsync()

非同期のダウンロード操作をキャンセルします。Cancels an asynchronous download operation.

Dispose() Dispose() Dispose() Dispose()

InPlaceHostingManager によって使用されているすべてのリソースを解放します。Releases all resources used by the InPlaceHostingManager.

DownloadApplicationAsync() DownloadApplicationAsync() DownloadApplicationAsync() DownloadApplicationAsync()

アプリケーションの更新プログラムをバックグラウンドでダウンロードします。Downloads an application update in the background.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
Execute() Execute() Execute() Execute()

ClickOnceClickOnce アプリケーションが Web ブラウザー内で実行される Windows Presentation Foundation ベースのアプリケーションである場合にのみ、そのアプリケーションを起動します。Launches the ClickOnceClickOnce application, if and only if it is a Windows Presentation Foundation-based application running in a Web browser.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetManifestAsync() GetManifestAsync() GetManifestAsync() 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() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)
UninstallCustomAddIn(String) UninstallCustomAddIn(String) UninstallCustomAddIn(String) UninstallCustomAddIn(String)

インストール済みの、アプリケーションのユーザー定義のコンポーネントを削除します。Removes a previously installed user-defined component of an application.

UninstallCustomUXApplication(String) UninstallCustomUXApplication(String) UninstallCustomUXApplication(String) UninstallCustomUXApplication(String)

<customUX> 要素を含む ClickOnceClickOnce アプリケーションを削除します。Removes a ClickOnceClickOnce application that includes the <customUX> element.

イベント

DownloadApplicationCompleted DownloadApplicationCompleted DownloadApplicationCompleted DownloadApplicationCompleted

アプリケーションがローカル コンピューターへのダウンロードを終了すると発生します。Occurs when the application has finished downloading to the local computer.

DownloadProgressChanged DownloadProgressChanged DownloadProgressChanged DownloadProgressChanged

アプリケーションまたはマニフェストのダウンロードのステータスに変更があった場合に発生します。Occurs when there is a change in the status of an application or manifest download.

GetManifestCompleted GetManifestCompleted GetManifestCompleted GetManifestCompleted

配置マニフェストがローカル コンピューターにダウンロードされると発生します。Occurs when the deployment manifest has been downloaded to the local computer.

適用対象