Extraire un exe des ressources [Résolu]

MacWarrior 33 Messages postés samedi 19 avril 2008Date d'inscription 5 septembre 2009 Dernière intervention - 21 févr. 2009 à 18:36 - Dernière réponse :  X3XPROJECT
- 4 févr. 2013 à 00:27
Bonsoir à tous,
j'ai un problème avec la fonction suivante :

Private Sub PictureBox15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox15.Click
My.Computer.FileSystem.CopyFile(My.Resources.MON_EXE, Application.StartupPath & "\MON_EXE.exe")
End Sub

L'erreur est la suivante :
Une valeur de type "tableau a 1 dimension(s)" ne peut être convertie en "string".

Pourriez vous m'aider à résoudre cette erreur?
Merci d'avance !
Afficher la suite 

Votre réponse

8 réponses

cs_Skeatwin 25 Messages postés samedi 17 mai 2008Date d'inscription 19 juillet 2011 Dernière intervention - 22 févr. 2009 à 12:50
+3
Utile
Fais plutot:

My.Computer.FileSystem.WriteAllBytes(Application.StartupPath &
"\MON_EXE.exe",
My.Resources.MON_EXE,
False)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Skeatwin
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 21 févr. 2009 à 19:55
0
Utile
Salut
Je n'y connais pas grand chose en .Net, mais :

- Quand tu veux extraire un objet de ta ressource, ce n'est qu'un objet. Le système ne sait pas encore qu'il s'agit d'un fichier (cela pourrait aussi bien être une Picture, un Curseur, une Icone ...).
La méthode CopyFile est prématurée.
A utiliser après avoir extrait l'objet ET stocké sous forme de fichier

- Syntaxe : "My.Ressources.MON_EXE"
D'où sors tu cette syntaxe ?
J'aurais plutôt vu un truc du style
   Dim monTableau() As Bytes = _
      My.Resources.ResourceManager.GetObject("Mon_EXE")
Et ensuite, sauver ces Bytes dans un fichier

Les spécialistes du .Net me corrigeront ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
MacWarrior 33 Messages postés samedi 19 avril 2008Date d'inscription 5 septembre 2009 Dernière intervention - 21 févr. 2009 à 20:12
0
Utile
Je vais répondre, mais dans le désordre...

Tout d'abord, le programme sais quels types de fichiers sont dans les ressources, surement par l'intermédiaire des extensions ou je ne sais quoi; dans ma fonction, en fonction du type de fichier, l'erreur n'est pas la même.

Ensuite, ma fonction, je la sort d'où, bonne question...
Je débute en Vb.Net ( tu l'aura surement remarqué ) et je réutilise les fonctions qui m'ont une utilité quelque part, et celle-ci ( "My.Ressources.MON_EXE" ) vient de la fonction complète suivante : ( ce n'est qu'un exemple, j'utilise déjà beaucoup de fois cette fonction )

Private Sub PictureBox4_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox4.MouseLeave
PictureBox4.Image = My.Resources.MON_IMAGE
End Sub

Je pensais donc pouvoir réutiliser cette syntaxe puisque, si j'ai compris correctement, celle-ci redirige vers les fichiers compris dans les ressources du programme.

Quant à ta fonction, je n'arrive pas à l'utiliser sans erreur ( à la compilation ou lors de l'utilisation ), pourrait-tu apporter plus d'informations ?
Commenter la réponse de MacWarrior
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 22 févr. 2009 à 00:37
0
Utile
Re
Désolé, je ne connais pas suffisamment .Net pour pouvoir te répondre.
Pour moi, les ressources ne peuvent inclurent directement des fichiers, mais simplement leur contenu, c'est à dire un tableau de Bytes. Libre à toi de les utiliser comme un fichier, mais je ne pense pas que ces données soient étiquetées "fichier" dans la ressource. (tu saisis la différence ?)
Dans l'exemple MON_IMAGE que tu présentes, il faudrait vérifier dans le code qui va avec si un objet portant ce nom aurait pu être défini comme structure, par exemple. Il est tout à fait improbable qu'une fonction ou sous fonction (*) puisse porter un mot en français, et en majuscules.
(*) ce qui suit le point "." d'un objet système (comme Resources) ne peut en aucun cas être un objet personnalisé. Il pourrait éventuellement apparaitre entre parenthèses(et entre " ), mais pas attaché avec un point.
L'objet est peut être identifié avec ce texte dans la ressource elle même, en tout les cas, quelque part; vérifie bien.
Une fois que tu auras trouvé où se trouve l'objet MON_IMAGE, tu n'auras plus qu'à étudier comment le reproduire avec ta propre appellation.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
MacWarrior 33 Messages postés samedi 19 avril 2008Date d'inscription 5 septembre 2009 Dernière intervention - 23 févr. 2009 à 10:13
0
Utile
Merci beaucoup, skeatwin, cela fonctionne à merveille !
Merci aussi à toi jack, même si tu n'a pas réussi à m'aider !
Commenter la réponse de MacWarrior
0
Utile
Bonjour a tous je voudrais extraire un dll dans le fichier c:/ProgramFiles/adobe/amtilb.dll par exemple

j'ai essayer se code My.Computer.FileSystem.WriteAllBytes(My.Computer.FileSystem.SpecialDirectories.ProgramFiles & "\ton.dll", My.Resources.ton, False)

mais sa marche pas car il me trouve pas adobe

merci de votre réponse cordialement = Skype :X3XPROJECT OU x3xproject@gmail.com
Commenter la réponse de X3XPROJECT
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 3 févr. 2013 à 14:43
0
Utile
Bonjour, X3XPROJECT,
Quel rapport avec la discussion ouverte ?
Bonjour a tous je voudrais extraire un dll dans le fichier c:/ProgramFiles/adobe/amtilb.dll

Relis-toi et reviens (dans la discussion que tu auras bien voulu ouvrir pour ce sujet différent) en sachant de quoi tu parles, s'il te plait.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Commenter la réponse de X3XPROJECT

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.