ApplicationDeployment.Update メソッド

定義

このアプリケーションの最新バージョンの同期ダウンロードとインストールを開始します。Starts a synchronous download and installation of the latest version of this application.

public:
 bool Update();
public bool Update ();
member this.Update : unit -> bool
Public Function Update () As Boolean

戻り値

アプリケーションが更新されている場合は true。それ以外の場合は falsetrue if an application has been updated; otherwise, false.

例外

ローカル コンピューターは、アプリケーションが実行するために要求したアクセス許可レベルを付与しませんでした。The local computer did not grant the application the permission level it requested to execute.

ClickOnceClickOnce の配置が破損しています。Your ClickOnceClickOnce deployment is corrupted. 問題の診断および解決方法に関するヒントについては、「ClickOnce 配置のトラブルシューティング」を参照してください。For tips on how to diagnose and correct the problem, see Troubleshooting ClickOnce Deployments.

新しい配置をネットワーク上の場所からダウンロードできませんでした。The new deployment could not be downloaded from its location on the network.

アプリケーションは現在更新されています。The application is currently being updated.

次のコード例では、アプリケーションの更新プログラムを確認します。更新プログラムが利用可能な場合は、同期的にインストールされます。The following code example checks for an application update; if an update is available, it installs it synchronously.

public:
    void InstallUpdateSync()
    {
        if (ApplicationDeployment::IsNetworkDeployed)
        {
            bool isUpdateAvailable = false;
            ApplicationDeployment^ appDeployment =
                ApplicationDeployment::CurrentDeployment;

            try
            {
                isUpdateAvailable = appDeployment->CheckForUpdate();
            }
            catch (InvalidOperationException^ ex)
            {
                MessageBox::Show("The update check failed. Error: {0}",
                    ex->Message);
                return;
            }

            if (isUpdateAvailable)
            {
                try
                {
                    appDeployment->Update();
                    MessageBox::Show(
                        "The application has been upgraded, and will now " +
                        "restart.");
                    Application::Restart();
                }
                catch (Exception^ ex)
                {
                    MessageBox::Show("The update failed. Error: {0}",
                        ex->Message);
                    return;
                }

            }
        }
    }
private void InstallUpdateSyncWithInfo()
{
    UpdateCheckInfo info = null;

    if (ApplicationDeployment.IsNetworkDeployed)
    {
        ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;

        try
        {
            info = ad.CheckForDetailedUpdate();
        }
        catch (DeploymentDownloadException dde)
        {
            MessageBox.Show("The new version of the application cannot be downloaded at this time. \n\nPlease check your network connection, or try again later. Error: " + dde.Message);
            return;
        }
        catch (InvalidDeploymentException ide)
        {
            MessageBox.Show("Cannot check for a new version of the application. The ClickOnce deployment is corrupt. Please redeploy the application and try again. Error: " + ide.Message);
            return;
        }
        catch (InvalidOperationException ioe)
        {
            MessageBox.Show("This application cannot be updated. It is likely not a ClickOnce application. Error: " + ioe.Message);
            return;
        }

        if (info.UpdateAvailable)
        {
            Boolean doUpdate = true;

            if (!info.IsUpdateRequired)
            {
                DialogResult dr = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButtons.OKCancel);
                if (!(DialogResult.OK == dr))
                {
                    doUpdate = false;
                }
            }
            else
            {
                // Display a message that the app MUST reboot. Display the minimum required version.
                MessageBox.Show("This application has detected a mandatory update from your current " + 
                    "version to version " + info.MinimumRequiredVersion.ToString() + 
                    ". The application will now install the update and restart.", 
                    "Update Available", MessageBoxButtons.OK, 
                    MessageBoxIcon.Information);
            }

            if (doUpdate)
            {
                try
                {
                    ad.Update();
                    MessageBox.Show("The application has been upgraded, and will now restart.");
                    Application.Restart();
                }
                catch (DeploymentDownloadException dde)
                {
                    MessageBox.Show("Cannot install the latest version of the application. \n\nPlease check your network connection, or try again later. Error: " + dde);
                    return;
                }
            }
        }
    }
}
Private Sub InstallUpdateSyncWithInfo()
    Dim info As UpdateCheckInfo = Nothing

    If (ApplicationDeployment.IsNetworkDeployed) Then
        Dim AD As ApplicationDeployment = ApplicationDeployment.CurrentDeployment

        Try
            info = AD.CheckForDetailedUpdate()
        Catch dde As DeploymentDownloadException
            MessageBox.Show("The new version of the application cannot be downloaded at this time. " + ControlChars.Lf & ControlChars.Lf & "Please check your network connection, or try again later. Error: " + dde.Message)
            Return
        Catch ioe As InvalidOperationException
            MessageBox.Show("This application cannot be updated. It is likely not a ClickOnce application. Error: " & ioe.Message)
            Return
        End Try

        If (info.UpdateAvailable) Then
            Dim doUpdate As Boolean = True

            If (Not info.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 (Not System.Windows.Forms.DialogResult.OK = dr) Then
                    doUpdate = False
                End If
            Else
                ' Display a message that the app MUST reboot. Display the minimum required version.
                MessageBox.Show("This application has detected a mandatory update from your current " & _
                    "version to version " & info.MinimumRequiredVersion.ToString() & _
                    ". The application will now install the update and restart.", _
                    "Update Available", MessageBoxButtons.OK, _
                    MessageBoxIcon.Information)
            End If

            If (doUpdate) Then
                Try
                    AD.Update()
                    MessageBox.Show("The application has been upgraded, and will now restart.")
                    Application.Restart()
                Catch dde As DeploymentDownloadException
                    MessageBox.Show("Cannot install the latest version of the application. " & ControlChars.Lf & ControlChars.Lf & "Please check your network connection, or try again later.")
                    Return
                End Try
            End If
        End If
        End If
End Sub

注釈

によってUpdateLocation指定された場所にアプリケーションの新しいバージョンを発行し、アプリケーションの配置マニフェストのバージョン番号が現在のアプリケーションのバージョン番号よりも大きい場合、アプリケーションは更新されたと見なされます。ユーザーのコンピューターにインストールされます。An application is considered updated when you publish a new version of the application to the location specified by UpdateLocation, and the version number in the application's deployment manifest is greater than the version number of the application currently installed on the user's computer.

この呼び出しは、更新プログラムがクライアントコンピューターにダウンロードされ、 ClickOnceClickOnceキャッシュにインストールされるまでブロックされます。この間、アプリケーションはユーザーに応答しなくなります。 UpdateThe Update call will block until the update has been downloaded to the client computer and installed into the ClickOnceClickOnce cache; during this time, the application will not be responsive to the user. アプリケーションの応答性を維持したり、ダウンロード中に進行状況レポートを表示UpdateAsyncしたりする場合は、代わりにメソッドを使用します。If you want to maintain application responsiveness or display a progress report during download, use the UpdateAsync method instead.

Updateアプリケーションマニフェストで "optional" とマークされていないすべてのファイルをダウンロードします。Update downloads all of the files that are not marked as "optional" in the application manifest. 必要に応じて、 DownloadFileGroup DownloadFileGroupAsyncまたはメソッドを使用して、オプションのファイルをダウンロードできます。You can download optional files on demand by using the DownloadFileGroup or the DownloadFileGroupAsync method.

ClickOnceClickOnceは、 Updateメソッドを呼び出したときに、アプリケーションを自動的に更新している場合があります。この場合InvalidOperationException、このメソッドを呼び出すと、がスローされます。may already be updating the application automatically when you call the Update method; if that happens, calls to this method will throw an InvalidOperationException.

配置内の1つ以上のファイルを更新しても、アプリケーションマニフェストを更新していない場合は、 InvalidDeploymentExceptionが表示されます。If you have updated one or more files in your deployment, but you have not refreshed your application manifest, you will receive an InvalidDeploymentException. ほとんどの場合、アプリケーションを再ClickOnceClickOnceデプロイすると、この問題が解決されます。Most of the time, redeploying your ClickOnceClickOnce application solves this problem. また、配置マニフェストまたはアプリケーションマニフェストの公開キーの署名が無効であるか、見つからない場合にも、この例外が発生します。You will also receive this exception if a public-key signature on a deployment manifest or application manifest is invalid or missing.

更新プログラムによって、以前のバージョンのアプリケーションよりも高いレベルの信頼がローカルコンピューターに要求される場合があります。An update may request a higher level of trust on the local computer than the previous version of the application. アプリケーションが信頼されたアプリケーションの配置を使用する場合、共通言語ランタイム (CLR) 信頼マネージャーは、配置マニフェストを調べて、有効な信頼ライセンスが含まれているかどうかを判断します。If the application uses Trusted Application Deployment, the common language runtime (CLR) trust manager examines the deployment manifest to determine whether it contains a valid trust license. 配置マニフェストに有効な信頼ライセンスが含まれていClickOnceClickOnceない場合、はインストールをTrustNotGrantedException停止し、をスローします。If the deployment manifest does not contain a valid trust license, ClickOnceClickOnce stops the installation and throws a TrustNotGrantedException. Updateメソッドは、アプリケーションの実行権限を付与するかどうかをユーザーに確認するプロンプトを表示しません。The Update method will never display a prompt asking the user whether they want to grant the application permission to run.

セキュリティ

PermissionSet
ローカルコンピューターへのフルアクセス。For full access to the local computer. PermissionState (関連する列挙体)Associated enumeration: PermissionState.

適用対象

こちらもご覧ください