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

Windows Forms Discussion :

Ajouter un exécutable dans un projet de déploiement


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174
    Par défaut Ajouter un exécutable dans un projet de déploiement
    Bonjour,
    J'ai développé une application winforms en utilisant VS 2008. Puis j'ai créé un projet de déploiement dans lequel j'ai mis tous les DLL et les dépendances de cette application. Mon pb est que j'ai besoin de lancer un exécutable au début de l'installation. J'ai pas trouvé comment faire ça. Est ce qu'il y a qq'un qui peut m'aider.
    Merci

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut run executable before install
    bonjour
    Que veux-tu dire avant l'installation ? ou se trouve cet exe ? deja installe sur la machine user?
    S'il est dans ton package msi ,son lancement ne peut se faire que dans le commit de l'installarion (validation en francais) c.à.d apres installation autrement il n'existe pas encore sur la machine user.
    voici un projet de classe dll donne par MSDN pour c#:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
    //1- cree un projet classlibrary
    //2- ajoute nouvel element class  installer :Installer1
    //3- supprime le fichier class1.cs (ne sert à rien)
    //3- creer un projet WinApp (executable de test)
    //4- rajoute à ton projet setup les 2 projets ci-dessus 
    // modifie ta classe Installer comme ci-dessous( code exemple en bas) 
    // je l'ai modifie pour lancer l'executable  "WinApp.Exe" inclus dans le package
     
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Configuration.Install;
    using System.IO; 
    namespace SetupHelperSHARP
    {
        [RunInstaller(true)]
        public partial class Installer1 : Installer
        {
            public Installer1()
            {
                InitializeComponent();
            }
            [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
            public override void Install(IDictionary stateSaver)
            {
                base.Install(stateSaver);
            }
     
            [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
            public override void Commit(IDictionary savedState)
            {
                base.Commit(savedState);
                FileInfo chemin = new FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
                System.Diagnostics.Process.Start(chemin.DirectoryName + "\\winapp.exe");
     
                //System.Diagnostics.Process.Start("http://www.microsoft.com");
            }
     
            [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
            public override void Rollback(IDictionary savedState)
            {
                base.Rollback(savedState);
            }
     
            [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
            public override void Uninstall(IDictionary savedState)
            {
                base.Uninstall(savedState);
            }
        }
    }
    si tu veux l'executer avant cela signifie :
    -Il est deja installe chez l'user et tu connais son chemin (dossier special machine du genre directory.system,program files) et tu fais Process.Start(chemin de l'exe).

    lien msdn
    http://msdn.microsoft.com/en-us/libr...100).aspx#Y419
    bon code.....

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174
    Par défaut
    Merci MABROUKI pour le lien
    Comment je peux transformer ce code en c++/cli?

    Merci d'avance

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut transformer en cl++/cli
    bonjour
    Pas tres difficile.Le voici bien pret .Il est de MSDN Doc.
    Fichier .H
    ---------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    //CE FICHIER.H EST GENERE AUTOMATIQUEMET LORS DE LACREATION
    //D'UN PROJET LIBRAIRIE DE CLASSE CLI
    //1-AJOUTER UN NOUVEL ELEMENT 
    //2-CHOISIR CLASS INSTALLER :InstallerClasseUtile
    //3-SUPPRIMER LE CLASS CREE INUTILE.
    #pragma once
     
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Configuration::Install;
    using namespace System::IO;
     
    namespace SetupHelperCli {
     
    	[RunInstaller(true)]
     
    	/// <summary>
    	/// Description résumée de InstallerClasseUtile
    	/// </summary>
    	public ref class InstallerClasseUtile : public System::Configuration::Install::Installer
    	{
    	public:
    		InstallerClasseUtile(void)
    		{
    			InitializeComponent();
    			//
    			//TODO*: ajoutez ici le code du constructeur
    			//
    		}
     
    	protected:
    		/// <summary>
    		/// Nettoyage des ressources utilisées.
    		/// </summary>
    		~InstallerClasseUtile()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
     
    	private:
    		/// <summary>
    		/// Variable nécessaire au concepteur.
    		/// </summary>
    		System::ComponentModel::Container ^components;
     
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
    		/// le contenu de cette méthode avec l'éditeur de code.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    		}
    #pragma endregion
    	};
     
    }
    Fichier .CPP
    -----------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    #include "StdAfx.h"
    #include "InstallerClasseUtile.h"
    //CODE A RAJOUTER
    #using <System.dll>
    #using <System.Configuration.Install.dll>
     
    using namespace System;
    using namespace System::Collections;
    using namespace System::ComponentModel;
    using namespace System::Configuration::Install;
    using namespace System::IO; 
     
     
    // Set 'RunInstaller' attribute to true.
     
    [RunInstaller(true)]
    ref class InstallerClasseUtile: public Installer
    {
    private:
     
    public:
    	InstallerClasseUtile()
    	{
     
    	}
     
     
    	// Override the 'Install' method.(Action Installer)
    	[System::Security::Permissions::SecurityPermissionAttribute(
    		System::Security::Permissions::SecurityAction::Demand)]
    	virtual void Install( IDictionary^ savedState ) override
    	{
    		Installer::Install( savedState );
     
     
    	}
     
    	// Override the 'Commit' method.(Action Valider)
    	[System::Security::Permissions::SecurityPermissionAttribute(
    	System::Security::Permissions::SecurityAction::Demand)]
    	virtual void Commit( IDictionary^ savedState ) override
    	{
    		Installer::Commit( savedState );
    		//CE CODE EST IDENTIQUE A CELUI DE C# DEJA COMMUNIQUE
     
    		/*System::IO::FileInfo^  cheminFichier = gcnew System::IO::FileInfo(System::Reflection::Assembly::GetExecutingAssembly()->Location);
    		System::Diagnostics::Process::Start(cheminFichier->DirectoryName + "\\MonExecutableForm.exe");*/
     
     
    		//CE CODE EST UNE ALTERNATIVE PLUS EFFICACE QUE LE PREMIER CAR IL RECUPERE 
    		//LE CHEMIN DE Context->Parameters avec la variable MSI  "TARGETDIR"
     
    		System::String^ Dossier= this->Context->Parameters["TARGETDIR"];
    		System::Diagnostics::Process::Start(Dossier + "\\MonExecutableForm.exe");
    	}
     
     
    	// Override the 'Rollback' method.(Action Restaure)
    	[System::Security::Permissions::SecurityPermissionAttribute(
    	System::Security::Permissions::SecurityAction::Demand)]
    	virtual void Rollback( IDictionary^ savedState ) override
    	{
    	  Installer::Rollback( savedState );
    	}
     
    	// Override the 'Uninstall' method.(Action DesInstaller)
    	[System::Security::Permissions::SecurityPermissionAttribute(
    	System::Security::Permissions::SecurityAction::Demand)]
    	virtual void Uninstall( IDictionary^ savedState ) override
    	{
    	  Installer::Uninstall( savedState );
    	}
     
    };
    Dans tous les cas s'il plante ,rien t'empeche d'utiliser la dll manage de c# en la referencant simplement dans ton projet.(c#,vb.net ou c++/cli c'est toujours du managed)
    J'ai fait le test et ca marche dans un projet setup de lancer un executable cli avec une classe intaller c#,ou vb.net
    bon code.....

  5. #5
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut repost,lien msdn
    bonjour
    Excuse -moi de l'envoi voici le 2eme lien MSDN pour l''exemple C++/CLI.

    http://msdn.microsoft.com/en-us/libr...(v=VS.90).aspx

    bonne soiree....

Discussions similaires

  1. Ajouter une console dans un projet Windows
    Par WebPac dans le forum C#
    Réponses: 3
    Dernier message: 10/03/2009, 17h23
  2. ajouter un .jar dans mon projet
    Par ali.ensi dans le forum EDI et Outils pour Java
    Réponses: 3
    Dernier message: 09/07/2008, 18h29
  3. comment configurer ajouter mes librairies dans mon projet web ?
    Par Chikh001 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 22/10/2007, 11h08
  4. ajouter une classe dans un projet
    Par bonbino dans le forum C++Builder
    Réponses: 4
    Dernier message: 23/10/2006, 14h35
  5. [Info] ajout de fichier dans des projets eclipse
    Par root76 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 16/12/2005, 12h48

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