none
Problème de mise a jour d'un projet avec la récupération d'un deployement RRS feed

  • Question

  • Bonjour,

    J'ai crée un projet que j'ai publier via VS8 et ClickOnce, la publication s'est bien déroulé mais je n'arrive pas a la récupéré via mon code source.

    J'ai regarder sur MSDN, j'ai trouver un code :

    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("{0Big Smile}K of {1Big Smile}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("{0Big Smile}K out of {1Big Smile}K downloaded - {2Big Smile}% 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

    Or dans le sub UpdateApplication le ApplicationDeployment.IsNetworkDeployed renvoie False de même que My.Application.Deployment renvoie l'erreur "L'identité de l'application n'est pas définie."

    Si quelqu'un peut m'aider ...
    Merci d'avance
    vendredi 18 avril 2008 16:06

Toutes les réponses

  • Bonjour,

     

    Est-ce à l'exécution "pure" que ApplicationDeployment.IsNetworkDeployed renvoi False ? Ou au niveau du débogage (en lançant via Visual Studio) ?

     

    Cordialement

    dimanche 20 avril 2008 18:00
    Modérateur
  • Je pense mettre tromper, car je pensais pouvoir vérifier si une mise a jour étè disponible, mais cette class permet de savoir si l'application a été lancer via le web, je ne travail dans se cadre la.

    Mais je suis toujour a la recherche d'un moyen de savoir si il y a une mise a jour et la télécharger via VS, sinon je le ferais via un socket et un module d'installation personnaliser.

    merci
    dimanche 20 avril 2008 18:06
  • Bonjour,

     

    Il n'est pas possible de lancer (et tester) une application purement déployée ClickOnce directement via Visual Studio.

    Vous êtes obligé de lancer l'application déployée manuellement et de l'attacher dans Visual Studio :

     

    http://msdn2.microsoft.com/fr-fr/library/ms228671(VS.80).aspx

     

    Cordialement

     

    lundi 21 avril 2008 11:00
    Modérateur