Extraire un exe des ressources

Résolu
Utilisateur anonyme - 21 févr. 2009 à 18:36
 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 !

8 réponses

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

My.Computer.FileSystem.WriteAllBytes(Application.StartupPath &
"\MON_EXE.exe",
My.Resources.MON_EXE,
False)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 févr. 2009 à 19:55
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)
0
Utilisateur anonyme
21 févr. 2009 à 20:12
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 ?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 févr. 2009 à 00:37
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
23 févr. 2009 à 10:13
Merci beaucoup, skeatwin, cela fonctionne à merveille !
Merci aussi à toi jack, même si tu n'a pas réussi à m'aider !
0
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 févr. 2013 à 14:43
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.
0
Rejoignez-nous