ApplicationDeployment ApplicationDeployment ApplicationDeployment ApplicationDeployment Class

Definizione

Supporta gli aggiornamenti della distribuzione corrente a livello di codice e gestisce il download di file su richiesta.Supports updates of the current deployment programmatically, and handles on-demand downloading of files. Questa classe non può essere ereditata.This class cannot be inherited.

public ref class ApplicationDeployment sealed
public sealed class ApplicationDeployment
type ApplicationDeployment = class
Public NotInheritable Class ApplicationDeployment
Ereditarietà
ApplicationDeploymentApplicationDeploymentApplicationDeploymentApplicationDeployment

Esempi

Esempio di codice seguente determina in fase di caricamento dell'applicazione se è disponibile un nuovo aggiornamento; Se è disponibile un aggiornamento obbligatorio, l'esempio di codice consente di installare l'aggiornamento in modo asincrono.The following code example determines at application load time whether a new update is available; if a required update is available, the code example installs the update asynchronously. Questo codice deve essere aggiunto a un modulo che contiene un TextBox denominato downloadStatus.This code should be added to a form that contains a TextBox named downloadStatus.

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;
    }
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);
    ad.UpdateAsync();
}

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

Private 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


Private 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


Private 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


Private 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

Commenti

È possibile configurare le ClickOnceClickOnce dell'applicazione per verificare la presenza di aggiornamenti e installarli automaticamente tramite la subscription elemento del manifesto della distribuzione.You can configure your ClickOnceClickOnce application to check for updates and install them automatically through the subscription element of the deployment manifest. Alcune applicazioni, è tuttavia necessario un controllo più preciso gli aggiornamenti.Some applications, however, need finer control over their updates. È possibile installare gli aggiornamenti necessari a livello di codice e richiedere agli utenti di installare aggiornamenti facoltativi in base alle esigenze.You may want to install required updates programmatically, and prompt users to install optional updates at their convenience. Disattivando aggiornamenti sugli abbonamenti nel manifesto di distribuzione, è possibile assumere il controllo completo di criteri di aggiornamento dell'applicazione.By turning off subscription updates in the deployment manifest, you can take complete control of your application's update policies. In alternativa, è possibile usare la sottoscrizione automatica in combinazione con ApplicationDeployment, che consente ClickOnceClickOnce per l'applicazione viene aggiornata periodicamente, ma utilizza ApplicationDeployment per scaricare gli aggiornamenti critici poco dopo il rilascio.Alternatively, you can use automatic subscription in conjunction with ApplicationDeployment, which enables ClickOnceClickOnce to update the application periodically, but uses ApplicationDeployment to download critical updates shortly after they are released.

È possibile verificare se la distribuzione, è disponibile un aggiornamento usando il CheckForUpdate o il CheckForUpdateAsync metodo; il secondo metodo che genera il CheckForUpdateCompleted eventi al termine dell'esecuzione.You can test whether your deployment has an available update by using either the CheckForUpdate or the CheckForUpdateAsync method; the latter method raises the CheckForUpdateCompleted event on successful completion. CheckForDetailedUpdate Restituisce informazioni importanti sull'aggiornamento, ad esempio il numero di versione e se è un aggiornamento obbligatorio per gli utenti correnti.CheckForDetailedUpdate returns important information about the update, such as its version number and whether it is a required update for current users. Se è disponibile un aggiornamento, è possibile installarlo tramite Update oppure UpdateAsync; il secondo metodo genera il UpdateCompleted eventi al termine dell'installazione dell'aggiornamento.If an update is available, you can install it by using Update or UpdateAsync; the latter method raises the UpdateCompleted event after installation of the update is complete. Per gli aggiornamenti di grandi dimensioni, è possibile ricevere notifiche di stato di avanzamento tramite il CheckForUpdateProgressChanged e UpdateProgressChanged eventi e usare le informazioni contenute in ProgressChangedEventArgs per notificare all'utente lo stato del download.For large updates, you can receive progress notifications through the CheckForUpdateProgressChanged and UpdateProgressChanged events, and use the information in ProgressChangedEventArgs to notify the user of the download status.

È anche possibile usare ApplicationDeployment per scaricare i file di grandi dimensioni e gli assembly su richiesta.You can also use ApplicationDeployment to download large files and assemblies on demand. Questi file devono essere contrassegnati come "facoltativi" nel manifesto dell'applicazione di distribuzione in modo che vengano scaricati durante l'installazione.These files must be marked as "optional" within the deployment's application manifest so that they are not downloaded during installation. È possibile scaricare i file in qualsiasi momento durante la durata dell'applicazione tramite il DownloadFileGroup o il DownloadFileGroupAsync (metodo).You can download the files at any point during the application's duration by using the DownloadFileGroup or the DownloadFileGroupAsync method. È possibile scaricare gli assembly prima che vengano caricati in memoria, fornendo un gestore eventi per il AssemblyResolve evento sul AppDomain classe.You can download assemblies before they are loaded into memory by supplying an event handler for the AssemblyResolve event on the AppDomain class. Per altre informazioni, vedere Procedura dettagliata: Download di assembly su richiesta con l'API della distribuzione ClickOnce tramite la finestra di progettazione.For more information, see Walkthrough: Downloading Assemblies on Demand with the ClickOnce Deployment API Using the Designer.

Nota

Se si aggiorna un ClickOnceClickOnce applicazione mentre è in esecuzione l'applicazione, l'utente non vedrà gli aggiornamenti fino a quando non si chiama il Restart metodo il Application, che chiude l'istanza attualmente in esecuzione dell'applicazione e riavviare immediatamente si tratta.If you update a ClickOnceClickOnce application while the application is running, the user will not see the updates until you call the Restart method of the Application, which will close the current running instance of the application and immediately restart it.

ApplicationDeployment non dispone di alcun costruttore pubblico. Per ottenere istanze della classe all'interno di un ClickOnceClickOnce dell'applicazione tramite il CurrentDeployment proprietà.ApplicationDeployment has no public constructor; you obtain instances of the class within a ClickOnceClickOnce application through the CurrentDeployment property. Si utilizza il IsNetworkDeployed proprietà per verificare che l'applicazione corrente è un ClickOnceClickOnce dell'applicazione.You use the IsNetworkDeployed property to verify that the current application is a ClickOnceClickOnce application.

ApplicationDeployment supporta controllo degli aggiornamenti e il download di file aggiornati in modo asincrono usando il nuovo Event-based Asynchronous Pattern Overview, che espone i callback di completamento come eventi di classe.ApplicationDeployment supports checking for updates and downloading updated files asynchronously by using the new Event-based Asynchronous Pattern Overview, which exposes completion callbacks as class events. ApplicationDeployment Avvia e gestisce i thread per l'utente richiama l'applicazione nel thread dell'interfaccia utente corretto.ApplicationDeployment starts and manages the threads for you, and calls your application back on the correct UI thread. Tramite questa classe, è possibile aggiornare senza bloccare l'applicazione, in modo che l'utente può continuare a lavorare durante l'installazione dell'aggiornamento.Through this class, you can update without locking up the application, so that the user can continue working while the update installs. Se l'utente deve arrestare tutte le operazioni mentre un aggiornamento viene eseguita, provare a utilizzare i metodi sincroni.If the user must stop all work while an update takes place, consider using the synchronous methods instead.

Nota

Eseguire gli aggiornamenti asincroni è necessario che l'applicazione importare entrambi i System.Deployment.Application e System.ComponentModel gli spazi dei nomi.Performing asynchronous updates requires that your application import both the System.Deployment.Application and System.ComponentModel namespaces.

Proprietà

ActivationUri ActivationUri ActivationUri ActivationUri

Ottiene l'URL utilizzato per avviare il manifesto di distribuzione dell'applicazione.Gets the URL used to launch the deployment manifest of the application.

CurrentDeployment CurrentDeployment CurrentDeployment CurrentDeployment

Restituisce la classe ApplicationDeployment corrente per la distribuzione.Returns the current ApplicationDeployment for this deployment.

CurrentVersion CurrentVersion CurrentVersion CurrentVersion

Ottiene la versione della distribuzione per l'istanza in esecuzione corrente dell'applicazione.Gets the version of the deployment for the current running instance of the application.

DataDirectory DataDirectory DataDirectory DataDirectory

Ottiene il percorso della directory dei dati di ClickOnceClickOnce.Gets the path to the ClickOnceClickOnce data directory.

IsFirstRun IsFirstRun IsFirstRun IsFirstRun

Ottiene un valore che indica se si tratta della prima volta che l'applicazione è stata eseguita sul computer client.Gets a value indicating whether this is the first time this application has run on the client computer.

IsNetworkDeployed IsNetworkDeployed IsNetworkDeployed IsNetworkDeployed

Ottiene un valore che indica se l'applicazione corrente è un'applicazione ClickOnceClickOnce.Gets a value indicating whether the current application is a ClickOnceClickOnce application.

TimeOfLastUpdateCheck TimeOfLastUpdateCheck TimeOfLastUpdateCheck TimeOfLastUpdateCheck

Ottiene la data e l'ora in cui ClickOnceClickOnce ha verificato la disponibilità di un aggiornamento dell'applicazione per l'ultima volta.Gets the date and the time ClickOnceClickOnce last checked for an application update.

UpdatedApplicationFullName UpdatedApplicationFullName UpdatedApplicationFullName UpdatedApplicationFullName

Ottiene il nome completo dell'applicazione dopo l'aggiornamento.Gets the full name of the application after it has been updated.

UpdatedVersion UpdatedVersion UpdatedVersion UpdatedVersion

Ottiene la versione dell'aggiornamento scaricato di recente.Gets the version of the update that was recently downloaded.

UpdateLocation UpdateLocation UpdateLocation UpdateLocation

Ottiene la condivisione file o il sito Web utilizzato per l'aggiornamento automatico da parte dell'applicazione.Gets the Web site or file share from which this application updates itself.

Metodi

CheckForDetailedUpdate() CheckForDetailedUpdate() CheckForDetailedUpdate() CheckForDetailedUpdate()

Esegue la stessa operazione del metodo CheckForUpdate(), ma restituisce informazioni estese sull'aggiornamento disponibile.Performs the same operation as CheckForUpdate(), but returns extended information about the available update.

CheckForDetailedUpdate(Boolean) CheckForDetailedUpdate(Boolean) CheckForDetailedUpdate(Boolean) CheckForDetailedUpdate(Boolean)

Esegue la stessa operazione del metodo CheckForUpdate(), ma restituisce informazioni estese sull'aggiornamento disponibile.Performs the same operation as CheckForUpdate(), but returns extended information about the available update.

CheckForUpdate() CheckForUpdate() CheckForUpdate() CheckForUpdate()

Controlla UpdateLocation per determinare se è disponibile un nuovo aggiornamento.Checks UpdateLocation to determine whether a new update is available.

CheckForUpdate(Boolean) CheckForUpdate(Boolean) CheckForUpdate(Boolean) CheckForUpdate(Boolean)

Controlla UpdateLocation per determinare se è disponibile un nuovo aggiornamento.Checks UpdateLocation to determine whether a new update is available.

CheckForUpdateAsync() CheckForUpdateAsync() CheckForUpdateAsync() CheckForUpdateAsync()

Controlla UpdateLocation in modo asincrono per determinare se è disponibile un nuovo aggiornamento.Checks UpdateLocation asynchronously to determine whether a new update is available.

CheckForUpdateAsyncCancel() CheckForUpdateAsyncCancel() CheckForUpdateAsyncCancel() CheckForUpdateAsyncCancel()

Annulla la verifica asincrona della disponibilità di aggiornamenti.Cancels the asynchronous update check.

DownloadFileGroup(String) DownloadFileGroup(String) DownloadFileGroup(String) DownloadFileGroup(String)

Esegue il download su richiesta di un gruppo di file facoltativi.Downloads a set of optional files on demand.

DownloadFileGroupAsync(String) DownloadFileGroupAsync(String) DownloadFileGroupAsync(String) DownloadFileGroupAsync(String)

Esegue in background il download su richiesta di un gruppo di file facoltativi.Downloads, on demand, a set of optional files in the background.

DownloadFileGroupAsync(String, Object) DownloadFileGroupAsync(String, Object) DownloadFileGroupAsync(String, Object) DownloadFileGroupAsync(String, Object)

Esegue in background il download su richiesta di un gruppo di file facoltativi e passa una parte dello stato dell'applicazione ai callback degli eventi.Downloads, on demand, a set of optional files in the background, and passes a piece of application state to the event callbacks.

DownloadFileGroupAsyncCancel(String) DownloadFileGroupAsyncCancel(String) DownloadFileGroupAsyncCancel(String) DownloadFileGroupAsyncCancel(String)

Annulla un download di file asincrono.Cancels an asynchronous file download.

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

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Inherited from Object)
IsFileGroupDownloaded(String) IsFileGroupDownloaded(String) IsFileGroupDownloaded(String) IsFileGroupDownloaded(String)

Verifica se il gruppo di file denominato è già stato scaricato sul computer client.Checks whether the named file group has already been downloaded to the client computer.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

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

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)
Update() Update() Update() Update()

Avvia in modo sincrono il download e l'installazione dell'ultima versione dell'applicazione.Starts a synchronous download and installation of the latest version of this application.

UpdateAsync() UpdateAsync() UpdateAsync() UpdateAsync()

Avvia in modo asincrono il download e l'installazione dell'ultima versione dell'applicazione.Starts an asynchronous download and installation of the latest version of this application.

UpdateAsyncCancel() UpdateAsyncCancel() UpdateAsyncCancel() UpdateAsyncCancel()

Annulla un aggiornamento asincrono avviato dal metodo UpdateAsync().Cancels an asynchronous update initiated by UpdateAsync().

Eventi

CheckForUpdateCompleted CheckForUpdateCompleted CheckForUpdateCompleted CheckForUpdateCompleted

Si verifica al completamento di CheckForUpdateAsync().Occurs when CheckForUpdateAsync() has completed.

CheckForUpdateProgressChanged CheckForUpdateProgressChanged CheckForUpdateProgressChanged CheckForUpdateProgressChanged

Si verifica quando un aggiornamento dello stato è disponibile su una chiamata al metodo CheckForUpdateAsync().Occurs when a progress update is available on a CheckForUpdateAsync() call.

DownloadFileGroupCompleted DownloadFileGroupCompleted DownloadFileGroupCompleted DownloadFileGroupCompleted

Si verifica sul thread principale dell'applicazione al termine del download di un file.Occurs on the main application thread when a file download is complete.

DownloadFileGroupProgressChanged DownloadFileGroupProgressChanged DownloadFileGroupProgressChanged DownloadFileGroupProgressChanged

Si verifica quando sono disponibili informazioni sullo stato di un'operazione di download di file avviata da una chiamata a DownloadFileGroupAsync.Occurs when status information is available on a file download operation initiated by a call to DownloadFileGroupAsync.

UpdateCompleted UpdateCompleted UpdateCompleted UpdateCompleted

Si verifica quando ClickOnceClickOnce ha completato l'aggiornamento dell'applicazione in seguito a una chiamata al metodo UpdateAsync().Occurs when ClickOnceClickOnce has finished upgrading the application as the result of a call to UpdateAsync().

UpdateProgressChanged UpdateProgressChanged UpdateProgressChanged UpdateProgressChanged

Si verifica quando in ClickOnceClickOnce sono disponibili nuove informazioni sullo stato per un'operazione di aggiornamento avviata mediante una chiamata al metodo UpdateAsync().Occurs when ClickOnceClickOnce has new status information for an update operation initiated by calling the UpdateAsync() method.

Si applica a

Vedi anche