IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Exécuter un programme à partir de mon Form (grâce aux ressources)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club Avatar de Arlan64
    Homme Profil pro
    Étudiant en BTS SIO SLAM
    Inscrit en
    Septembre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant en BTS SIO SLAM

    Informations forums :
    Inscription : Septembre 2020
    Messages : 9
    Par défaut Exécuter un programme à partir de mon Form (grâce aux ressources)
    Bonjour,

    Étant plutôt débutant dans le langage VB.NET, je cherche à créer un launcher d'applications .exe (entre autres, mettre les 6 versions de mon jeu vidéo dans les ressources du Form). En fait, je veux que l'utilisateur choisisse une des 6 versions dans un ComboBox, puis quand l'utilisateur clique sur "Jouer", le launcher devra lancer la version choisie par l'utilisateur. Mais le problème, c'est que je ne sais pas comment programmer ça ! J'ai cherché partout sur internet et je ne trouve pas grand chose :/

    Merci d'avance pour votre aide !

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Il ne faut pas vouloir tout faire en même temps donc ce que je te recommande c'est d'aborder différentes notions dans un premiers temps en décomposant ton gros projet en plus petits projets :

    1er projet :

    - Stocker un binaire (fichier exécutable) dans les ressources d'un projet WinForm.
    - Ajouter un bouton avec son évènement Click. Dans le code de cet évènement utiliser la classe File de l'espace de noms System.IO (System.IO.File) puis la méthode WriteAllBytes pour écrire la resource sur le disque dur de l'utilisateur à un emplacement temporaire. Enfin, utiliser la classe Process et la méthode Start (System.Diagnostics.Proces.Start) pour exécuter le binaire depuis l'emplacement temporaire.

    2ème projet :

    - Se familiariser avec le contrôle Combobox : ajouter des éléments dans la collection d'items en mode statique depuis l'éditeur de propriétés du Combobox, utiliser l'évènement SelectedIndexChanged qui permettra de déclencher une action lorsque l'utilisateur sélectionnera un élément de la liste.

    Après ceci tu pourras créer ton projet qui regroupe l'ensemble des notions acquises dans ces 2 projets.

    Bon codage++

  3. #3
    Membre du Club Avatar de Arlan64
    Homme Profil pro
    Étudiant en BTS SIO SLAM
    Inscrit en
    Septembre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant en BTS SIO SLAM

    Informations forums :
    Inscription : Septembre 2020
    Messages : 9
    Par défaut
    D'accord, merci pour ton conseil ^^

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Par défaut
    Bonjour Arlan64,

    Wallace1 te donne la solution concernant ton problème,

    Je souhaite attirer ton attention sur la pertinence de stocker tes Exe dans les ressources.

    Si c'est un Launcher que tu veux faire, tu aurais plutôt intérêt a ne stocker que le chemin d’accès de tes Exe sous form de String (Dans un fichier INI ou XML)
    Et d'appeler ensuite, comme te le suggère Wallace1, la classe Process.Start pour les lancer.

    Imagine que tu veuilles lancer des logiciels comme Word ou Excel dans ton Launcher

    Et du coup plus besoin de faire une copie temporaire de ta ressource sur le disque dur.

    Bon codage à toi

  5. #5
    Membre du Club Avatar de Arlan64
    Homme Profil pro
    Étudiant en BTS SIO SLAM
    Inscrit en
    Septembre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant en BTS SIO SLAM

    Informations forums :
    Inscription : Septembre 2020
    Messages : 9
    Par défaut
    Bonsoir,

    Je rencontre un problème assez dérangeant...

    J'ai placé mes 6 applications .exe (je précise que chaque .exe fait en moyenne je dirais 130Mo donc c'est pas rien tout de même), je finis le programme (j'ai d'abord testé le programme avec une ressource (donc une application) et ça a marché !) puis je teste avec toutes les 6 ressources, et ça ne marche pas :/

    J'ai pas le message d'erreur sous la main mais je pense que c'est dû au fait que le Form ne peut pas stocker autant d'octets dans les ressources, alors j'ai pensé à faire un algorithme de ce style:

    Si l'utilisateur clique sur le bouton "Jouer" ;
    Si l'index 0 ("1.5.0.0") de la combobox est sélectionnée ;
    Vérifier si le .exe est présent dans l'ordinateur
    Si ce n'est pas le cas ;
    Exécuter un lien de téléchargement direct pour installer le .exe sur l'ordinateur dans un dossier spécifique (dans Roaming par exemple)
    Si c'est le cas, exécuter le .exe

    Je ne sais pas si vous comprenez mon algorithme, j'espère en tout cas... ^^' Par contre je ne sais pas du tout comment faire en sorte de vérifier si un fichier est présent et que si jamais ce fichier n'est pas présent, qu'il faut le télécharger et l'installer dans un dossier quelconque :/

    En espérant avoir votre aide :0

    PS: Je (re)précise mais il s'agit là d'un launcher pour lancer l'une de mes 6 versions de mon jeu vidéo, donc ce n'est pas comme Word par exemple où tout le monde a le fichier vous voyez, c'est pour ça que j'utilise les ressources au lieu des chemins :/

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Tout le monde n'a pas Word, Excel, ... La suite Office n'est pas gratuite.

    Mais peut-être que ceci est une réponse à ta dernière question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If System.IO.File.Exists(NomEtCheminCompletDuFichier) Then
    ' il existe
    Else
    ' il n'existe pas
    End If
    Bonne soirée,


  7. #7
    Membre du Club Avatar de Arlan64
    Homme Profil pro
    Étudiant en BTS SIO SLAM
    Inscrit en
    Septembre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant en BTS SIO SLAM

    Informations forums :
    Inscription : Septembre 2020
    Messages : 9
    Par défaut
    Bonsoir Phil Rob,

    Oui je sais bien que tout le monde n'a pas la licence Office, mais je reprenais juste l'exemple de Sivsam13 vous voyez où je voulais en venir je suppose ^^'

    Et merci infiniment pour votre aide, bonne soirée

  8. #8
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Bon environ 130 Mo un .exe multiplié par 6...... alors là c'est clair que l'embedded est compromis à moins de zipper l'ensemble (avec 7z) et de l'ajouter dans les ressources de ton launcher...... Mais bon c'est vraiment too much à mon sens o_O"

    Si tu veux juste vérifier que l'exe est présent dans un emplacement bien précis et l'exécuter s'il existe ou le télécharger puis l'exécuter s'il n'existe pas.

    1- Tu décides quel sera l'emplacement de destination du téléchargement = une variable d'environnement + un répertoire par exemple
    2- Tu peux utiliser la classe WebClient et sa méthode DownloadfileAsync pour télécharger un/des fichiers avec éventuellement la possibilité d'afficher la progression du téléchargement.
    3- Tu utilises la classe File et sa méthode Exists


    Voilà

    Bon codage++

  9. #9
    Membre du Club Avatar de Arlan64
    Homme Profil pro
    Étudiant en BTS SIO SLAM
    Inscrit en
    Septembre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant en BTS SIO SLAM

    Informations forums :
    Inscription : Septembre 2020
    Messages : 9
    Par défaut
    Bonsoir !

    Désolé de mon absence, j'ai juste eu un "petit" problème... ^^'

    En gros je n'ai plus le projet, mon laptop m'a lâché un second "No Bootable Device", donc j'ai mon nouveau disque dur aussi qui a lâché

    Après j'espère qu'il y a un moyen de récup' des trucs, j'ai pensé à un branchement SATA vers USB mais bon :l

    Je reviendrai peut-être sur cette discussion un jour ou l'autre, en tout cas, merci à tous pour votre aide !

  10. #10
    Membre du Club Avatar de Arlan64
    Homme Profil pro
    Étudiant en BTS SIO SLAM
    Inscrit en
    Septembre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant en BTS SIO SLAM

    Informations forums :
    Inscription : Septembre 2020
    Messages : 9
    Par défaut
    Bonjour à tous !

    Je suis (enfin) revenu sur cette discussion car l'envie de créer ce launcher était revenue suite à ce qu'on a fait dans ma formation en BTS SIO: créer une form VB.NET. Et tout de suite j'ai repensé à tout ce que j'avais fait sur ce launcher. Si vous voulez des nouvelles, j'ai officiellement perdu le projet, mais ce n'est pas si grave, on repart sur de bonnes bases !

    Donc pour commencer, j'ai recréé les éléments principaux (combobox, boutons...), et il y a quelque chose qui me dérange.

    En fait, je veux que l'utilisateur (quand il aura téléchargé le launcher) soit obligé de choisir un chemin qui sera celui par défaut pour le launcher, ce chemin sera le dépôt de toutes les versions du jeu. Je veux faire ça car le problème que j'ai c'est d'indiquer le chemin d'installation d'une version, mais que l'utilisateur peut très bien installer la version dans un autre répertoire. Or, si on essaie de lancer la version, il se peut qu'il soit introuvable alors que l'utilisateur l'a bien téléchargé, mais juste au mauvais répertoire. (Je ne sais pas si c'était très clair... )

    J'ai plusieurs idées qui me viennent en tête, mais je ne sais pas quel fonctionnement serait le mieux :/

    J'ai pensé à créer un bouton "Chemin", qui permet à l'utilisateur de sélectionner un dossier (au lieu de rentrer à la main le chemin ce qui est pénible) qui sera le dossier par défaut où toutes les versions seront sauvegardées, et dans le programme, au moment de cliquer sur le bouton "Jouer" (avec une version choisie dans le combobox), le launcher va directement chercher dans le dossier choisi par défaut si la version existe bien ou pas. Si elle existe, lancer le jeu. Sinon, accéder à un lien direct de téléchargement.

    Mais là encore le problème étant qu'au moment de télécharger la version, je ne sais pas comment faire en sorte de directement faire installer la version dans le dossier par défaut, sans passer par le navigateur qui sauvegardera le fichier soit dans le dossier Downloads, ou n'importe qui pourrait dévier du dossier par défaut :/

    J'ai essayé d'être le plus clair possible, j'ai fait énormément de recherches (ou c'est sûrement moi qui cherche mal je ne sais pas), mais votre aide serait la bienvenue ! (Si cette discussion n'est pas à l'abandon ^^")

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/05/2011, 18h22
  2. Exécuter un programme à partir du code C
    Par TempArea dans le forum C
    Réponses: 7
    Dernier message: 08/04/2010, 01h03
  3. Exécuter un programme à partir d'un service windows
    Par TekP@f dans le forum Windows Forms
    Réponses: 5
    Dernier message: 28/01/2009, 11h09
  4. Réponses: 2
    Dernier message: 13/12/2006, 13h48
  5. Réponses: 13
    Dernier message: 01/05/2006, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo