Question desinstallation/suppression/installer [Résolu]

cs_Seadol 18 Messages postés vendredi 22 août 2008Date d'inscription 8 avril 2014 Dernière intervention - 29 déc. 2008 à 15:19 - Dernière réponse : cs_Seadol 18 Messages postés vendredi 22 août 2008Date d'inscription 8 avril 2014 Dernière intervention
- 30 déc. 2008 à 20:06
Voila, je sais pas si c'est plutôt en VB ou en BAT mais voici ce que je voudrais faire.

J'aimerai, grâce a une application, desintaller un programme qui se trouve précisement a : C:\Program Files\Slayers Online

Après la desintallation, j'aimerai que le repertoire soit supprimé ( les dossier a l'intérieur avec ), puis, a j'aimerai après que la page web suivant soit lancé (http://www.slayersonline.net/download/so_setup.exe) pour reinstaller le programme.

Quelqu'un pourrait me dire comment faire ? ( pas précisement mais des directives a suivre )
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_fauve 661 Messages postés vendredi 2 décembre 2005Date d'inscription 23 mars 2011 Dernière intervention - 30 déc. 2008 à 13:58
3
Merci
Salut,

1° Pour désinstaller Slayers Online :

Shell("C:\Program Files\Slayers Online\unins000.exe", AppWinStyle.NormalFocus, True)

<hr size= "2" width="100%" />
2° Pour supprimer le dossier C:\Program Files\Slayers Online\

My.Computer.FileSystem.DeleteDirectory("C:\Program Files\Slayers Online", FileIO.DeleteDirectoryOption.DeleteAllContents)

<hr size ="2" width= "100%" />
3° Pour télécharger http://www.slayersonline.net/download/so_setup.exe

a) Télécharge cette classe : http://sos.win.free.fr//imagesVBFrance/Download_File.vb

b) Ajoute cette classe dans ton Projet ( Projet > Ajouter un élément existant)

c) Puis dans ta Form, rajoute ceci juste après Public Class :

Private WithEvents Dl As New Download_File
Private SizeFile As Long 'variable pour la taille du fichier
Private StartTime As Long 'variable pour le temps du dl

Dim FormDownload As New Form
Dim TextBoxDownload, InfosDownload As New Label
Dim ProgressBarDownload As New ProgressBar

d) Rajoute ensuite ces fonctions dans ta Form

Public Sub LaunchDownloadFile(ByVal URL As StringByVal FileName As String)

     FormDownload.Size  = New Drawing.Size(400150)
     FormDownload.FormBorderStyle =  Windows.Forms.FormBorderStyle.Sizable
     FormDownload.StartPosition = FormStartPosition.CenterScreen
     FormDownload.Text =  "Téléchargement en cours..."

     FormDownload.Controls.Add(TextBoxDownload)
     TextBoxDownload.Location  =  New  System.Drawing.Point(1010)
     TextBoxDownload.AutoSize  =  True
     TextBoxDownload.Text =  URL

     FormDownload.Controls.Add(InfosDownload)
     InfosDownload.Text =  "Test"
     InfosDownload.Location  =  New  System.Drawing.Point(1040)

     FormDownload.Controls.Add(ProgressBarDownload)
     ProgressBarDownload.Location  =  New System.Drawing.Point(1070)
     ProgressBarDownload.Size =   New  System.Drawing.Size(36515)

     FormDownload.Show()
     Control.CheckForIllegalCrossThreadCalls  = False 'n'intercepte pas les erreur inter-thread
     Dl.DonwloadFile(URL, FileName, False)
End Sub

Private Sub Dl_Debut_Dl(ByVal Taille_Fichier As LongByVal resumepos As LongByVal Temps_Depart As LongHandles Dl.Debut_Dl
     SizeFile =  Taille_Fichier 'stocke la taille du fichier
     InfosDownload.Text =  "Debut du dl : Taille du fichier : "  & Taille_Fichier.ToString
     StartTime  =  Date .Now.Ticks 'stocke le temps de départ
End Sub

Private Sub Dl_Fin_Dl(ByVal actual_pos As LongHandles Dl.Fin_Dl
     ProgressBarDownload.Value  =  0 'reinitialise la progressbar
     SizeFile =   0  'idem
     StartTime  = 0 'idem
     FormDownload.Close()
End Sub

Private Sub Dl_Progression_Dl(ByVal actual_pos As LongHandles Dl.Progression_Dl
     Try
          ProgressBarDownload.Value =   CInt ((actual_pos / SizeFile) * 100) 'etat de la progression du dl
          Dim speed As Long  = CLng((actual_pos * 10000000) / (DateTime.Now.Ticks - StartTime)) 'calcule de la vitesse
          If speed  <>  0 Then
               Dim TpsEstime As Date
               InfosDownload.Text  =  "Vitesse : " & ConvertLen(speed) & " Tps estimé : " &  CStr (DateAdd(DateInterval.Second, Math.Round((SizeFile - actual_pos) / speed), TpsEstime))
          End If
     Catch ex As OverflowException
          Exit Sub
     End Try
End Sub

Private Function ConvertLen(ByRef fileLen As LongAs String 'fonction pour convertir la vitesse
     Dim Resultat As String  =   ""

     If fileLen < 1024 Then Resultat  =  fileLen & " octets"
      If  fileLen > 1024 Then Resultat  =  Math.Round(fileLen / 1024) &  " Ko"
     If fileLen > 1024000 Then Resultat  =  Math.Round(fileLen / ( 1024000 ), 2) & " Mo"
     If fileLen > 1024000000 Then Resultat  =  Math.Round(fileLen / (1024000000), 2) &  " Go"

     Return Resultat
End Function

e) Lancer le téléchargement :

LaunchDownloadFile("http://www.slayersonline.net/download/so_setup.exe"My.Application.Info.DirectoryPath + "\so_setup.exe")

f) Lancer l'installation

Shell(My.Application.Info.DirectoryPath + "\so_setup.exe", AppWinStyle.NormalFocus, True)

<hr size ="2" width="100%" />++

Fauve
<hr size="2" width="100%" />Pensez : Réponse Acceptée 

Merci cs_fauve 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de cs_fauve
bigou87 32 Messages postés dimanche 20 janvier 2008Date d'inscription 15 janvier 2009 Dernière intervention - 29 déc. 2008 à 17:36
0
Merci
Je ne comprends pas trop ce que tu veux précisément, l'application est déjà sur ton PC ? Tu veux donc créer un programme de désinstallation ?

BIGU87
Commenter la réponse de bigou87
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 29 déc. 2008 à 18:04
0
Merci
salut,

même interrogation que

[../auteur/BIGOU87/1277396.aspx bigou87]

, la logique serait de lancer le uninst en waitforsingleobject (enfin à voir comment çà se présente en dotnet) puis de lancer le téléchargement et l'execution du nouveau setup.

NB : me semble avoir lu qu'en dotnet existait un module intégré pour gérer les mises à jour automatiquement, peut-être une piste à suivre...

la question que nous te posons est au final : ton exe (ou bat) de désinstallation, qui est sensé supprimer et mettre à jour, il est lancé par le client? ou c'est l'appli elle-même...

la première version de ton appli SO est-elle correctement installée depuis un setup propre et complet?

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Commenter la réponse de PCPT
cs_Seadol 18 Messages postés vendredi 22 août 2008Date d'inscription 8 avril 2014 Dernière intervention - 29 déc. 2008 à 20:22
0
Merci
Oui,

mais le problème est que, parfois, il faut parfois desintaller, supprimer le fichier Slayersonline, et reinstaller pour qu'il fonctionne ( oui ça arrive), et j'aimerai pouvoir faire ça automatiquement et rapidement
Commenter la réponse de cs_Seadol
bigou87 32 Messages postés dimanche 20 janvier 2008Date d'inscription 15 janvier 2009 Dernière intervention - 30 déc. 2008 à 10:38
0
Merci
Je ne comprends toujours pas très bien   mais si j'ai bien compris je te conseil d'utiliser InnoSetup pour créer un installateur pour ton programme ! Durant la procédure il y a une case à cocher pour que InnoSetup fasse aussi le fichier de désinstallation de ton application ! Tu la coches et au moment de choisir les fichiers à inclure tu ajoutes bien ton fichier Slayersonline . Comme sa il sera placé sur le disque durant l'installation et il te suffira de desinstaller le programme et de le réinstaller ! SI tu est intéréssé visite cette page où se trouve un tutoriel et le lien de téléchargement de InnoSetup   
BIGU87
Commenter la réponse de bigou87
cs_Seadol 18 Messages postés vendredi 22 août 2008Date d'inscription 8 avril 2014 Dernière intervention - 30 déc. 2008 à 16:50
0
Merci
J'ai pas trop compris comment assembler tout tes codes.

Le code final, je doit l'enregistrer avec l'extension .vbs ?
Commenter la réponse de cs_Seadol
cs_fauve 661 Messages postés vendredi 2 décembre 2005Date d'inscription 23 mars 2011 Dernière intervention - 30 déc. 2008 à 18:42
0
Merci
Ce que je t'ai donné sur mon précédent message c'est du VB.NET

Il faut utiliser Microsoft Visual Basic 2008 Express Edition

<hr size="2" width="100%" />Pensez : Réponse Acceptée 
Commenter la réponse de cs_fauve
cs_Seadol 18 Messages postés vendredi 22 août 2008Date d'inscription 8 avril 2014 Dernière intervention - 30 déc. 2008 à 20:06
0
Merci
J'ai mis le code :

Public Class Form1
    Private WithEvents Dl As New Download_File
    Private SizeFile As Long 'variable pour la taille du fichier
    Private StartTime As Long 'variable pour le temps du dl

    Dim FormDownload As New Form
    Dim TextBoxDownload, InfosDownload As New Label
    Dim ProgressBarDownload As New ProgressBar
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Shell("C:\Program Files\Slayers Online\unins001.exe", AppWinStyle.NormalFocus, True)
        My.Computer.FileSystem.DeleteDirectory("C:\Program Files\Slayers Online", FileIO.DeleteDirectoryOption.DeleteAllContents)
    Public Sub LaunchDownloadFile(ByVal URL As String, ByVal FileName As String)

        FormDownload.Size = New Drawing.Size(400, 150)
        FormDownload.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable
        FormDownload.StartPosition = FormStartPosition.CenterScreen
        FormDownload.Text = "Téléchargement en cours..."

        FormDownload.Controls.Add(TextBoxDownload)
        TextBoxDownload.Location = New System.Drawing.Point(10, 10)
        TextBoxDownload.AutoSize = True
        TextBoxDownload.Text = URL

        FormDownload.Controls.Add(InfosDownload)
        InfosDownload.Text = "Test"
        InfosDownload.Location = New System.Drawing.Point(10, 40)

        FormDownload.Controls.Add(ProgressBarDownload)
        ProgressBarDownload.Location = New System.Drawing.Point(10, 70)
        ProgressBarDownload.Size = New System.Drawing.Size(365, 15)

        FormDownload.Show()
        Control.CheckForIllegalCrossThreadCalls = False 'n'intercepte pas les erreur inter-thread
        Dl.DonwloadFile(URL, FileName, False)
    End Sub

    Private Sub Dl_Debut_Dl(ByVal Taille_Fichier As Long, ByVal resumepos As Long, ByVal Temps_Depart As Long) Handles Dl.Debut_Dl
        SizeFile = Taille_Fichier 'stocke la taille du fichier
        InfosDownload.Text = "Debut du dl : Taille du fichier : " & Taille_Fichier.ToString
        StartTime = Date.Now.Ticks 'stocke le temps de départ
    End Sub

    Private Sub Dl_Fin_Dl(ByVal actual_pos As Long) Handles Dl.Fin_Dl
        ProgressBarDownload.Value = 0 'reinitialise la progressbar
        SizeFile = 0 'idem
        StartTime = 0 'idem
        FormDownload.Close()
    End Sub

    Private Sub Dl_Progression_Dl(ByVal actual_pos As Long) Handles Dl.Progression_Dl
        Try
            ProgressBarDownload.Value = CInt((actual_pos / SizeFile) * 100) 'etat de la progression du dl
            Dim speed As Long = CLng((actual_pos * 10000000) / (DateTime.Now.Ticks - StartTime)) 'calcule de la vitesse
            If speed <> 0 Then
                Dim TpsEstime As Date
                InfosDownload.Text = "Vitesse : " & ConvertLen(speed) & " Tps estimé : " & CStr(DateAdd(DateInterval.Second, Math.Round((SizeFile - actual_pos) / speed), TpsEstime))
            End If
        Catch ex As OverflowException
            Exit Sub
        End Try
    End Sub

    Private Function ConvertLen(ByRef fileLen As Long) As String 'fonction pour convertir la vitesse
        Dim Resultat As String = ""

        If fileLen < 1024 Then Resultat = fileLen & " octets"
        If fileLen > 1024 Then Resultat = Math.Round(fileLen / 1024) & " Ko"
        If fileLen > 1024000 Then Resultat = Math.Round(fileLen / (1024000), 2) & " Mo"
        If fileLen > 1024000000 Then Resultat = Math.Round(fileLen / (1024000000), 2) & " Go"
        LaunchDownloadFile("http://www.slayersonline.net/download/so_setup.exe", My.Application.Info.DirectoryPath + "\so_setup.exe")
        Shell(My.Application.Info.DirectoryPath + "\so_setup.exe", AppWinStyle.NormalFocus, True)
        Return Resultat
    End Function

    End Sub
End Class

Et concernant ton b), dans le fichier Download_File.vb importé il y a :

Option Strict On 'soyons strict
Option Explicit On 'et explicit !

Imports System.Net

'Ceci n'est pas ma classe je l'ai prise sur VBfrance
'Auteur : Hbv
'J'ai rajouté des commentaires car il n'y en avait aucun !
'J'ai modifié la classe pour l'intégrer dans mon tutos

Public Class Download_File

    '3 events :
    '- Pour le début du télechargement (debut_dl)
    ' pour la progression du téléchargement (progression_dl)
    ' pour la fin du téléchargement (fin_dl)

    Public Event Debut_Dl(ByVal Taille_Fichier As Long, ByVal resumepos As Long, ByVal Temps_Depart As Long)
    Public Event Progression_Dl(ByVal actual_pos As Long)
    Public Event Fin_Dl(ByVal actual_pos As Long)

    Dim b As Boolean 'indique si l'utiliateur veut annulé son dl
    Dim bresume As Boolean
    Dim readstr As IO.Stream
    Dim lenfile As Long
    Dim bytesarr(102400) As Byte
    Dim timestart As Long
    Dim tmppos As Long
    Dim posresume As Long
    Dim pathname As String
    Dim urlz As String

    Public Sub DonwloadFile(ByVal Source As String, ByVal Path As String, ByVal IsResume As Boolean)
        b = True
        bresume = IsResume
        timestart = 0
        pathname = Path
        urlz = Source
        If My.Computer.FileSystem.FileExists(Path) = True Then
            My.Computer.FileSystem.DeleteFile(Path)
        End If
        Dim threadz As New System.Threading.Thread(AddressOf thread_launch)
        threadz.Start()
    End Sub

    Private Sub thread_launch() 'thread pour lancer le téléchargement
        Get_file(urlz, pathname) 'appel de la procédure de dl
    End Sub

    Public Sub Cancel_Dl() 'pour annuler le téléchargement
        b = False
    End Sub
    Private Sub Get_file(ByVal fileurl As String, ByVal filepath As String, Optional ByVal proxy As String Nothing, Optional ByVal proxyport As Integer Nothing)
        If proxy <> Nothing And proxyport <> Nothing Then
            Dim hproxy As New WebProxy(proxy, proxyport)
            ' GlobalProxySelection.Select = hproxy
            WebRequest.DefaultWebProxy = hproxy
        End If

        Dim hwebrequest As System.Net.HttpWebRequest = CType(System.Net.WebRequest.Create(fileurl), HttpWebRequest)
        If bresume = True Then
            posresume = CInt(FileLen(filepath))
            tmppos = posresume
            hwebrequest.AddRange(CInt(tmppos))
        End If

        Dim hwebresponse As System.Net.HttpWebResponse = CType(hwebrequest.GetResponse, HttpWebResponse)
        readstr = hwebresponse.GetResponseStream
        lenfile = hwebresponse.ContentLength + tmppos
        timestart = Environment.TickCount 'temps de depart du téléchargement
        Dim tmplen As Long 'indique la position du flux
        tmplen = 2
        b = True
        RaiseEvent Debut_Dl(lenfile, CInt(posresume), CInt(timestart)) 'debut du téléchargement
        Do While tmplen > 0
            If b = False Then Exit Do 'en cas d'annulation, on quitte la boucle
            tmplen = readstr.Read(bytesarr, 0, 102400) 'lis les données
            tmppos += tmplen 'position du stream
            Dim filesave As New IO.FileStream(filepath, IO.FileMode.Append, IO.FileAccess.Write)
            filesave.Write(bytesarr, 0, CInt(tmplen)) 'ecrit les données dans le fichier au bon entroit
            filesave.Close() 'ferme le fichier
            RaiseEvent Progression_Dl(tmppos) 'déclanche l'event progression
            ' System.Threading.Thread.Sleep(100) 'ca sert à rien mais c'est pour ralentir le code je suppose !
        Loop
        RaiseEvent Fin_Dl(tmppos) 'le telechargement est terminé !
        readstr.Close() 'on ferme tout
        readstr = Nothing
    End Sub

End Class

Est-ce bon?

comment je le compile ?

merci
Commenter la réponse de cs_Seadol

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.