ApplicationDeployment クラスとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > ApplicationDeployment クラスの意味・解説 

ApplicationDeployment クラス

メモ : このクラスは、.NET Framework version 2.0新しく追加されたものです。

プログラムによる現在の配置更新と、必要に応じファイルダウンロードサポートします。このクラス継承できません。

名前空間: System.Deployment.Application
アセンブリ: System.Deployment (system.deployment.dll 内)
構文構文

解説解説

配置マニフェストsubscription 要素によって、自動的に更新チェックしてインストールするように、ClickOnce アプリケーション構成できます。ただし、一部アプリケーションでは、更新対するより細かい制御が必要です。必須の更新プログラムによってインストールし、オプション更新場合ユーザー都合合わせてインストールできるようにユーザー確認求めプロンプト表示できます配置マニフェストサブスクリプション更新無効にすることにより、アプリケーション更新ポリシーを完全に制御できますまた、ClickOnceアプリケーション定期的に更新できるようにする ApplicationDeployment組み合わせて自動サブスクリプション使用することもできます。ただし、重要な更新リリースされ直後ダウンロードするには、ApplicationDeployment使用します

CheckForUpdate メソッドまたは CheckForUpdateAsync メソッド使用すると、配置利用可能更新があるかどうか調べることができます後者メソッドは、正常に完了すると CheckForUpdateCompleted イベント発生させます。CheckForDetailedUpdate は、更新バージョン番号や、その更新現在のユーザーにとって必須の更新かどうかなど、更新に関する重要な情報返します更新利用できる場合は、Update または UpdateAsync を使用してインストールできます後者メソッドは、更新インストール完了すると UpdateCompleted イベント発生させますサイズ大き更新場合は、CheckForUpdateProgressChanged イベントと UpdateProgressChanged イベントによって進行状況通知受け取ることができますまた、ProgressChangedEventArgs の情報使用してダウンロードステータスユーザー通知することもできます

ApplicationDeployment使用すると、必要に応じてサイズ大きファイルアセンブリダウンロードすることもできます。これらのファイルは、インストール時ダウンロードされないように、配置アプリケーション マニフェスト内で "optional" としてマークする必要があります。DownloadFileGroup メソッドまたは DownloadFileGroupAsync メソッド使用すると、アプリケーション存続期間にいつでもファイルダウンロードできますAppDomain クラスの AssemblyResolve イベントイベント ハンドラ提供することによって、アセンブリメモリ読み込まれ前にダウンロードできます詳細については、「チュートリアル : デザイナ使用しClickOnce 配置 API必要に応じてアセンブリダウンロードする」を参照してください

ApplicationDeployment には、パブリック コンストラクタはありません。ClickOnce アプリケーション内のこのクラスインスタンスは、CurrentDeployment プロパティ使用して取得します現在のアプリケーションClickOnce アプリケーションかどうか確認するには、IsNetworkDeployed プロパティ使用します

ApplicationDeployment では、更新チェックしクラスイベントとして完了コールバック公開する新しイベントベースの非同期パターン概要使用して最新ファイル非同期ダウンロードできますApplicationDeployment は、スレッド開始および管理し適切な UI スレッドアプリケーションコールバックます。これにより、アプリケーションロックせずに更新できるため、ユーザー更新インストール中も作業続けることができます更新実行時ユーザーすべての作業中止する必要がある場合は、代わりに同期メソッド使用することを検討してください

メモメモ

非同期更新実行するには、アプリケーションSystem.Deployment 名前空間System.ComponentModel 名前空間両方インポートする必要があります

使用例使用例

アプリケーション読み込み時に新し更新利用できるかどうか確認し必須の更新場合非同期インストールするコード例次に示します

Private sizeOfUpdate As Long
 = 0

Dim WithEvents ADUpdateAsync As
 ApplicationDeployment

Private Sub UpdateApplication()
    If (ApplicationDeployment.IsNetworkDeployed) Then
        ADUpdateAsync = ApplicationDeployment.CurrentDeployment

        ADUpdateAsync.CheckForUpdateAsync()
    End If
End Sub

Sub ADUpdateAsync_CheckForUpdateProgressChanged(ByVal
 sender As Object, ByVal
 e As DeploymentProgressChangedEventArgs) Handles ADUpdateAsync.CheckForUpdateProgressChanged
    DownloadStatus.Text = [String].Format("{0:D}K of {1:D}K downloaded.",
 e.BytesCompleted / 1024, e.BytesTotal / 1024)
End Sub


Sub ADUpdateAsync_CheckForUpdateCompleted(ByVal
 sender As Object, ByVal
 e As CheckForUpdateCompletedEventArgs) Handles ADUpdateAsync.CheckForUpdateCompleted
    If (e.Error IsNot Nothing) Then
        MessageBox.Show(("ERROR: Could not retrieve new version
 of the application. Reason: " + ControlChars.Lf + e.Error.Message +
 ControlChars.Lf + "Please report this error to the system administrator."))
        Return
    Else
        If (e.Cancelled = True) Then
            MessageBox.Show("The update was cancelled.")
        End If
    End If

    ' Ask the user if they would like to update the application now.
    If (e.UpdateAvailable) Then
        sizeOfUpdate = e.UpdateSizeBytes

        If (Not e.IsUpdateRequired) Then
            Dim dr As DialogResult = MessageBox.Show("An
 update is available. Would you like to update the application now?",
 "Update Available", MessageBoxButtons.OKCancel)
            If (System.Windows.Forms.DialogResult.OK = dr) Then
                BeginUpdate()
            End If
        Else
            MessageBox.Show("A mandatory update is available for
 your application. We will install the update now, after which we will save all
 of your in-progress data and restart your application.")
            BeginUpdate()
        End If
    End If
End Sub

Private Sub BeginUpdate()
    ADUpdateAsync = ApplicationDeployment.CurrentDeployment
    ADUpdateAsync.UpdateAsync()
End Sub


Sub ADUpdateAsync_UpdateProgressChanged(ByVal
 sender As Object, ByVal
 e As DeploymentProgressChangedEventArgs) Handles ADUpdateAsync.UpdateProgressChanged
    Dim progressText As String
 = String.Format("{0:D}K out of {1:D}K downloaded
 - {2:D}% complete", e.BytesCompleted / 1024, e.BytesTotal / 1024, e.ProgressPercentage)
    DownloadStatus.Text = progressText
End Sub


Sub ADUpdateAsync_UpdateCompleted(ByVal sender
 As Object, ByVal e As
 AsyncCompletedEventArgs) Handles ADUpdateAsync.UpdateCompleted
    If (e.Cancelled) Then
        MessageBox.Show("The update of the application's
 latest version was cancelled.")
        Exit Sub
    Else
        If (e.Error IsNot Nothing) Then
            MessageBox.Show("ERROR: Could not install the latest
 version of the application. Reason: " + ControlChars.Lf + e.Error.Message
 + ControlChars.Lf + "Please report this error to the system administrator.")
            Exit Sub
        End If
    End If

    Dim dr As DialogResult = MessageBox.Show("The
 application has been updated. Restart? (If you do not restart now, the new version
 will not take effect until after you quit and launch the application again.)", "Restart Application", MessageBoxButtons.OKCancel)
    If (dr = System.Windows.Forms.DialogResult.OK) Then
        Application.Restart()
    End If
End Sub
long sizeOfUpdate = 0;

private void UpdateApplication()
{
    if (ApplicationDeployment.IsNetworkDeployed)
    {
        ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
        ad.CheckForUpdateCompleted += new CheckForUpdateCompletedEventHandler(ad_CheckForUpdateCompleted);
        ad.CheckForUpdateProgressChanged += new DeploymentProgressChangedEventHandler(ad_CheckForUpdateProgressChanged);

        ad.CheckForUpdateAsync();
    }
}

void  ad_CheckForUpdateProgressChanged(object sender, DeploymentProgressChangedEventArgs
 e)
{
    downloadStatus.Text = String.Format("Downloading: {0}. {1:D}K of {2:D}K
 downloaded.", GetProgressString(e.State), e.BytesCompleted/1024, e.BytesTotal/1024);
   
}

string GetProgressString(DeploymentProgressState state)
{
    if (state == DeploymentProgressState.DownloadingApplicationFiles)
    {
        return "application files";
    } 
    else if (state == DeploymentProgressState.DownloadingApplicationInformation)
 
    {
        return "application manifest";
    } 
    else 
    {
        return "deployment manifest";
    }
}

void ad_CheckForUpdateCompleted(object sender, CheckForUpdateCompletedEventArgs
 e)
{
    if (e.Error != null)
    {
        MessageBox.Show("ERROR: Could not retrieve new version
 of the application. Reason: \n" + e.Error.Message + "\nPlease report
 this error to the system administrator.");
        return;
    }
    else if (e.Cancelled == true)
    {
        MessageBox.Show("The update was cancelled.");
    }

    // Ask the user if they would like to update the application now.
    if (e.UpdateAvailable)
    {
        sizeOfUpdate = e.UpdateSizeBytes;

        if (!e.IsUpdateRequired)
        {
            DialogResult dr = MessageBox.Show("An update is available. Would
 you like to update the application now?\n\nEstimated Download Time: ", "Update
 Available", MessageBoxButtons.OKCancel);
            if (DialogResult.OK == dr)
            {
                BeginUpdate();
            }
        }
        else
        {
            MessageBox.Show("A mandatory update is available for
 your application. We will install the update now, after which we will save all
 of your in-progress data and restart your application.");
            BeginUpdate();
        }
    }
}

private void BeginUpdate()
{
    ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
    ad.UpdateCompleted += new AsyncCompletedEventHandler(ad_UpdateCompleted);

    // Indicate progress in the application's status bar.
    ad.UpdateProgressChanged += new DeploymentProgressChangedEventHandler(ad_UpdateProgressChanged);
}

void ad_UpdateProgressChanged(object sender, DeploymentProgressChangedEventArgs
 e)
{
    String progressText = String.Format("{0:D}K out of {1:D}K downloaded - {2:D}%
 complete", e.BytesCompleted / 1024, e.BytesTotal / 1024, e.ProgressPercentage);
    downloadStatus.Text = progressText;
}

void ad_UpdateCompleted(object sender, AsyncCompletedEventArgs
 e)
{
    if (e.Cancelled)
    {
        MessageBox.Show("The update of the application's latest version was
 cancelled.");
        return;
    }
    else if (e.Error != null)
    {
        MessageBox.Show("ERROR: Could not install the latest version of the
 application. Reason: \n" + e.Error.Message + "\nPlease report this
 error to the system administrator.");
        return;
    }

    DialogResult dr = MessageBox.Show("The application has been updated. Restart?
 (If you do not restart now, the new version will not take effect
 until after you quit and launch the application again.)", "Restart Application", MessageBoxButtons.OKCancel);
    if (DialogResult.OK == dr)
    {
        Application.Restart();
    }
}
private:
    long sizeOfUpdate;


private:
    void Form1_Load(Object^ sender, System::EventArgs^ e)
    {
        DoUpdate();
    }

public:
    void DoUpdate()
    {
        if (ApplicationDeployment::IsNetworkDeployed)
        {
            ApplicationDeployment^ currentAppDeployment =
                ApplicationDeployment::CurrentDeployment;
            currentAppDeployment->CheckForUpdateCompleted +=
                gcnew CheckForUpdateCompletedEventHandler(
                this, &Form1::currentDeploy_CheckForUpdateCompleted);
            currentAppDeployment->CheckForUpdateAsync();
        }
    }

    // If update is available, fetch it.
    void currentDeploy_CheckForUpdateCompleted(Object^ sender
,
        CheckForUpdateCompletedEventArgs^ e)
    {
        if (nullptr != e->Error)
        {
            // Log error.
            return;
        }

        if (e->UpdateAvailable)
        {
            sizeOfUpdate = (long) e->UpdateSizeBytes;
            if (!e->IsUpdateRequired)
            {
                System::Windows::Forms::DialogResult 
                    updateDialogueResult = MessageBox::Show(
                    "An update is available.Would you like to update the"
 +
                    " application now?", "Update Available",
                    MessageBoxButtons::OKCancel);
                if (System::Windows::Forms::DialogResult::OK ==
 
                    updateDialogueResult)
                {
                    BeginUpdate();
                }
            }
            else
            {
                BeginUpdate();
            }
        }
    }

    void BeginUpdate()
    {
        ApplicationDeployment^ ad = ApplicationDeployment::CurrentDeployment;
        ad->UpdateCompleted +=
            gcnew AsyncCompletedEventHandler(
            this, &Form1::CurrentDeployment_UpdateCompleted);

        // Indicate progress in the application's status bar.
        ad->UpdateProgressChanged +=
            gcnew DeploymentProgressChangedEventHandler(this,
 
            &Form1::ad_ProgressChanged);

        ad->UpdateAsync();
    }

    void CurrentDeployment_UpdateCompleted(Object^ sender,
        AsyncCompletedEventArgs^ e)
    {
        if (!e->Cancelled)
        {
            if (nullptr != e->Error)
            {
                System::Windows::Forms::DialogResult 
                    restartDialogueResult = MessageBox::Show(
                    "The application has been updated. Restart?",
                    "Restart Application",
                    MessageBoxButtons::OKCancel);
                if (System::Windows::Forms::DialogResult::OK ==
 
                    restartDialogueResult)
                {
                    Application::Restart();
                }
            }
            else
            {
                // Replace with your own error reporting or logging.
                MessageBox::Show(
                    "The application encountered an error in
 downloading" +
                    " the latest update. Error: {0}",
                    e->Error->Message);
            }
        }
        else
        {
            // Replace with your own error reporting or logging.
            MessageBox::Show("The update of the application's latest" +
                " version was cancelled.");
        }
    }

    void ad_ProgressChanged(Object^ sender,
        DeploymentProgressChangedEventArgs^ e)
    {
        String^ progressText =
            String::Format(
            "{0:D}K out of {1:D}K downloaded - {2:D}% complete",
            e->BytesCompleted / 1024, e->BytesTotal / 1024,
            e->ProgressPercentage);
        statusStrip1->Text = progressText;
    }
継承階層継承階層
System.Object
  System.Deployment.Application.ApplicationDeployment
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


このページでは「.NET Framework クラス ライブラリ リファレンス」からApplicationDeployment クラスを検索した結果を表示しています。
Weblioに収録されているすべての辞書からApplicationDeployment クラスを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からApplicationDeployment クラス を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ApplicationDeployment クラス」の関連用語

ApplicationDeployment クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ApplicationDeployment クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS