Je développe un installeur et j'ai besoin de téléchargé des fichiers (.exe). cepandant en utilisant
Code :
Code :
My.Computer.Network.DownloadFile
Le ficher se télécharge bien, mais lorsque l'on essai de le lancer, il s'ouvre dans une console et se ferme (alors que c'est une winform !!! ) J'ai pu remédier à ce probleme en compressant ces fichiers... en .gz
J'utilise donc la méthode de Gzip Stream pour les décompresser ! voici mon code :
La fonction de décompression :
Code :
Code :
Public Function decompression(ByVal cheminSource As String, ByVal cheminDestination As String) As Boolean
Try
'Lecture du fichier compresse
Dim monFileStream As New FileStream(cheminSource, FileMode.Open)
' Données du fichier placées dans un GZipStream
Dim monGzipStream As New GZipStream(monFileStream, CompressionMode.Decompress)
' Tableau qui va contenir la taille du fichier
Dim tailleOctets(3) As Byte
' Positionnement dans le Stream pour récupérer la taille
Dim position As Integer = CInt(monFileStream.Length - 4)
monFileStream.Position = position
' Récupération de la taille du fichier
monFileStream.Read(tailleOctets, 0, 4)
' Repositionnement en début du Stream
monFileStream.Position = 0
' Conversion de la taille du fichier en entier
Dim tailleFichier As Integer = BitConverter.ToInt32(tailleOctets, 0)
' Dimesionnement du buffer
Dim buffer(tailleFichier + 100) As Byte
' Offset qui permettra de se repérer dans le Stream
Dim monOffset As Integer = 0
While (True)
' Les données sont décompressées et placées dans le buffer
Dim decompressionOctets As Integer = monGzipStream.Read(buffer, monOffset, 100)
' Tant qu'il reste des données on continue
If (decompressionOctets = 0) Then
Exit While
End If
' On icrémente l'offset pour ne pas repartir de 0 à chaque fois...
monOffset += decompressionOctets
End While
' Création du fichier décompressé
monFileStream = New FileStream(cheminDestination, FileMode.Create)
' Ecriture des données décomrpessées dans le fichier
monFileStream.Write(buffer, 0, tailleFichier - 1)
' Efface les données en mémoire tampon
monFileStream.Flush()
' Fermeture des Streams
monFileStream.Close()
monGzipStream.Close()
Return True
Catch ex As Exception
Return False
MsgBox(ex.Message)
End Try
End Function
Cette fonction est appelée comme suit :
Code :
Code :
Call decompression(path & "\" & name & ".gz", path & "\" & name & ".exe" )
Code :
Code :
path & "\" & name & ".gz"
étant le chemin du fichiers une fois celui ci téléchargé...
NB: j'ai essayer de mettre juste path dans le 2eme argument mais meme probleme...
Mon probleme :
Aucune décompression n'est effectuée !
Et le plus étonnant est que je n'ai aucune erreur en sortie !
Marsh Posté le 02-05-2016 à 18:07:41
Bonjour !
Je développe un installeur et j'ai besoin de téléchargé des fichiers (.exe). cepandant en utilisant
Code :
Le ficher se télécharge bien, mais lorsque l'on essai de le lancer, il s'ouvre dans une console et se ferme (alors que c'est une winform !!! )
J'ai pu remédier à ce probleme en compressant ces fichiers... en .gz
J'utilise donc la méthode de Gzip Stream pour les décompresser ! voici mon code :
La fonction de décompression :
Code :
Cette fonction est appelée comme suit :
Code :
Code :
étant le chemin du fichiers une fois celui ci téléchargé...
NB: j'ai essayer de mettre juste path dans le 2eme argument mais meme probleme...
Mon probleme :
Aucune décompression n'est effectuée !
Et le plus étonnant est que je n'ai aucune erreur en sortie !
Merci de votre aide !