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

C++ Discussion :

Déploiement d'une application


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 56
    Points
    56
    Par défaut Déploiement d'une application
    Bonjour,

    Je viens de créer dans un but pédagogique (apprentissage de QT que je ne connaissais pas et voulait tester) un updater.

    Je voudrais maintenant comprendre le système pour pouvoir déployer mon application sur des machines différentes (vista, seven, XP, ...).
    Le problème c'est que je ne comprend pas comment réalisé un bon installeur.
    Après recherche sur internet, j'ai vu qu'on pouvait créer des installeurs avec par exemple Inno Setup. Pour cela on a besoin de toute les dépendances de DLL.

    J'ai donc essayé d'utiliser Dependency Walker pour les connaitre et j'ai mis dans mon installeur les bons fichiers (encore que ... vu que ca marche pas).
    Donc j'ai mis les dll de QT, mes ressources (ici une seul image), l'executable et deux dlls de visual studio 2010.

    Si je lance sur mon poste l'ensemble de ce dossier, tout marche bien. J'ai essayer de le mettre sur mon second ordinateur et j'ai l'erreur :
    "L'application ou la DLL .../chemin/MSVCR100.dll n'est pas une image Windows valide. Vérifiez à l'aide de votre disquette d'installation".

    Je ne sais donc pas trop d'ou viens le problème.
    J'ai plusieurs hypothèse :
    - il me manquerait donc encore certaines DLL qui ont été installé soit avec QT soit avec visual studio et que je n'ai pas intégré.
    - je pense aussi que ça pourrait venir du fait que j'ai compilé avec un ordinateur en 64bit et que j'essaye de l'executer sur un 32bit.
    - j'ai peut etre intégré des DLL pour 64bit que j'essaye de faire tourner sur du 32bit ...

    Pourriez-vous s'il vous plait m'aider à comprendre comment marche le déploiement pour que mon application tourne sous n'importe quel système d'exploitation qu'il soit en 32 ou 64bit.

    D'avance merci,

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,
    Citation Envoyé par Morrigan Voir le message
    - je pense aussi que ça pourrait venir du fait que j'ai compilé avec un ordinateur en 64bit et que j'essaye de l'executer sur un 32bit.
    - j'ai peut etre intégré des DLL pour 64bit que j'essaye de faire tourner sur du 32bit ...

    Pourriez-vous s'il vous plait m'aider à comprendre comment marche le déploiement pour que mon application tourne sous n'importe quel système d'exploitation qu'il soit en 32 ou 64bit.
    Ne cherche pas plus loin: c'est ca...

    Un OS 64 bits peut, éventuellement, utiliser des applications compilées pour être effectuées sous 32 bits, s'il dispose de la version 32 bits des dlls requises, mais il n'y a, par contre, aucun moyen de faire fonctionner une application 64 bits sur un système 32 bits (les différentes parties du processeur ne sont, tout simplement, pas assez grandes pour travailler en 64 bits )

    Sois aussi attentif au fait que la version de l'ensemble (application + dépendances) qui doit correspondre en terme d'architecture:

    Qu'il n'y ait ne serait-ce qu'une seule dll 32 bits alors que le reste est compilé en 64 bits, ou l'inverse, et tu sera d'office bloqué

    Nota: sauf erreur de ma part MSVC10.dll est d'office fournie avec les redistribuables .NET... tu devrais donc pouvoir te passer de celle-ci si tu vérifie que la bonne version du framework .NET est installée (à confirmer cependant )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Si tu n'as pas explicitement installé le compilateur 64 bits et demandé à ton projet de compiler en 64 bits, alors il y a peu de chance que ça se fasse sournoisement.

    A mon avis c'est plus parce qu'il faut installer vcredist_x86 lors du déploiement, il n'est pas possible de copier manuellement les DLL (oui des fois ça semble fonctionner, jusqu'au moment où non :p).
    Et aussi il faut déployer la version 'release', il est à la fois interdit (par la charte d'utilisation de visual studio) et un peu plus subtil de déployer une version 'debug'.

    MAT.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 56
    Points
    56
    Par défaut
    Bonjour, merci de vos réponses.

    Je peux donc imaginer que n'ayant rien précisé pour compiler en 64bit (j'ai seulement mon PC qui est en 64bit), en rajoutant le framework 4 .net dans mon installeur et en enlevant les 2 dlls de Visual Studio, tout devrait fonctionner correctement ensuite ?
    Nota : Je fournis toujours la version release et non la debug

    Je vais de ce pas tester.
    Merci,

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    C'est maintenant bon de mon coté (au moins sur une machine ), en installant le vcredit_x86 ( Package redistribuable Microsoft Visual C++ 2010 ), le problème se résout et mon application fonctionne.

    J'aimerais aussi savoir si le fait de développer avec Visual Studio 2010 fait que mon application sera obligatoirement conçu exclusivement pour windows ou si elle pourra passer sous linux ou mac ?
    N'ayant pas d'environnement linux/mac, je ne peux pas tester.

    J'ai lu cette page msdn : http://msdn.microsoft.com/fr-fr/library/xw1ew2f8.aspx
    et je compile actuellement avec NMAKE et le fichier .pro.
    Je ne fait aucun include de windows.h et utilise des bibliothèques multiplateforme.

    Avec ces informations, est-ce que je peux en déduire que mon application sera multiplateforme ? Faut-il faire des installeurs différents entre windows, linux et mac ?

    Merci de vos réponses.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Citation Envoyé par Morrigan Voir le message
    J'aimerais aussi savoir si le fait de développer avec Visual Studio 2010 fait que mon application sera obligatoirement conçu exclusivement pour windows ou si elle pourra passer sous linux ou mac ?
    Tant que tu utilises du C++ standard, en théorie c'est bon.

    Citation Envoyé par Morrigan Voir le message
    N'ayant pas d'environnement linux/mac, je ne peux pas tester.
    En pratique sans tester, c'est quand même assez difficile d'être sûr, il y a toujours des petits détails à corriger.

    Citation Envoyé par Morrigan Voir le message
    Avec ces informations, est-ce que je peux en déduire que mon application sera multiplateforme ?
    Oui.

    Citation Envoyé par Morrigan Voir le message
    Faut-il faire des installeurs différents entre windows, linux et mac ?
    Oui.

    MAT.

  7. #7
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    [quote=Morrigan;5599283]
    J'aimerais aussi savoir si le fait de développer avec Visual Studio 2010 fait que mon application sera obligatoirement conçu exclusivement pour windows ou si elle pourra passer sous linux ou mac ?
    N'ayant pas d'environnement linux/mac, je ne peux pas tester.

    J'ai lu cette page msdn : http://msdn.microsoft.com/fr-fr/library/xw1ew2f8.aspx
    et je compile actuellement avec NMAKE et le fichier .pro.
    Je ne fait aucun include de windows.h et utilise des bibliothèques multiplateforme.

    Avec ces informations, est-ce que je peux en déduire que mon application sera multiplateforme ?
    Là, une réponse de normand est de mise :"ptet ben qu'oui, ptet ben qu'non"

    Si tu veilles à n'utiliser que des fonctionnalités fournies par le standard ou par des bibliothèques disponibles sur les différentes plateformes (comme Qt que tu sembles utiliser, vu que tu parle d'un fichier .pro), il devrait être possible d'obtenir quelque chose compilant sur les différentes plateformes.

    Mais le fait de veiller à ne pas inclure windows.h n'est pas forcément suffisant:

    Je ne sais pas ce qu'il en est de VS2010, mais, dans les versions précédentes, les projets utilisaient régulièrement un fichier d'en-tête nommé "stdafx.h" qui était un fichier d'en-tête permettant l'utilisation des en-têtes précompilées, et qui peut poser certains soucis en dehors de VS.

    De même, si tu fais appel à quelque chose fournis par... le framework .NET, tu sera rapidement "mal barré"

    Le fait que tu aies du installer vcredist est déjà mauvais signe en soi car... c'est le framework .NET, bien que cela ne veuille pas dire "charrette" var il fournit, également, la dll permettant d'utiliser la bibliothèque standard de C+

    En un mot, il n'y a pas énormément de solutions: il faut que tu essaye
    Faut-il faire des installeurs différents entre windows, linux et mac ?
    Oui, de toutes façons...

    Pire encore, tu devra compiler (mais sans doute pas avec VS) tes applications spécifiquement sur chaque système que tu souhaite supporter

    Je ne vais pas *trop* parler de mac car je ne connais pas suffisamment pour éviter de dire des bêtises, mais, ce qui est sur, c'est que les binaires exécutables sont gérés tout à fait différemment sous linux et sous windows.

    Et l'installation elle-même d'applications se fait de manière tout à fait différente également (d'ailleurs, elle se fait même de manière différente en fonction du linux utilisé: il existe très certainement trois ou quatre systèmes de "gestion des paquets" qui permettent aux utilisateurs de linux d'installer quelque chose ... chaque distribution de linux utilise un gestionnaire de paquet qui lui est propre )

    Il est possible, mais pas avec le compilateur de microsoft, de disposer de ce qu'on appelle un "compilateur croisé", c'est à dire un compilateur fonctionnant sur une plateforme donnée (par exemple windows) et capable de fournir des applications utilisables sur une autre (par exemple linux).

    Sous linux, le compilateur utilisé est Gcc (GNU Compiler Collection), qui est disponible sous windows, mais qui fournit des... applications pour windows

    Si tu souhaites l'utiliser pour créer des applications utilisables sous linux, tu devra le compiler toi-même pour en faire un compilateur croisé.

    Je n'ai plus l'adresse en tête, mais il y a "quelque part" sur ce site un article qui explique comment s'y prendre

    En outre, il faut savoir que linux est disponible en libre téléchargement et qu'il est tout à fait possible d'installer windows et linux sur un même ordinateur, et de choisir au moment du démarrage le système sur lequel tu souhaite travailler.

    Windows ne voit traditionnellement absolument pas les partitions de disque utilisées par linux, mais, à l'inverse, linux reconnait parfaitement les partitions de windows, et il sait même écrire dessus

    Autrement, tu as également la possibilité d'envisager le recours à la virtualisation:

    Il existe des applications que l'on appelle de manière globale "machine virtuelle" comme virtual PC, VM Ware ou encore Virtual Box qui te permettent, pour faire simple, de faire "comme si tu avais un autre PC", et donc d'installer sur ce "PC virtuel" le système d'exploitation que tu veux.

    Cela représente sans doute la solution la moins invasive pour faire cohabiter plusieurs systèmes d'exploitation, car, tout ce que cela demande, c'est un peut de place sur le disque dur qui sera considéré comme "utilisable" par le système hébergé, au lieu de devoir commencer à chipoter avec le partitionnement de ton disque dur

    PS: désolé d'avoir divergé, mais je voulais te donner un aperçu plus ou moins complet de tes possibilités
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 56
    Points
    56
    Par défaut
    Je pense donc qu'il y a pour l'instant de grande chance que mon application puisse tourner en multiplateforme si je compile avec autre chose que Visual Studio.
    En effet, je n'inclue pas de bibliothèque windows, je n'utilise pas les entêtes pré-compilées et je ne me sert pas du framework .NET.
    Par contre le fait d'installer comme tu l'as dit le package redistribuable suffit à limiter l'application à windows (cf : download details du package -> system requirements qui n'inclue que windows ...).

    Donc pour avoir du multiplateforme faut pas utiliser Visual pour commencer
    Personnellement, je vais continuer à coder sous Visual que je trouve bien pratique tout de même et je compilerais différents versions pour linux et windows.

    Pour ce qui est de créer un installeur pour linux, je n'en suis pas encore là donc mais l'option que j'envisage est comme tu l'as cité de partionner un de mes disques pour y mettre linux.
    Quand j'en serais là (c'est pas encore gagné ), je passerais surement de grosses journées à m'arracher les cheveux avec GCC pour recompiler mon projet sous linux (ça je le sens gros comme une maison ...).

    Merci de ces réponses détaillées.

    PS: C'est pas moi qui vais me plaindre de réponses détaillées.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déploiement d'une application.
    Par Whenseslass dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 03/08/2006, 17h18
  2. Tomcat 5.5: déploiement d'une application, config server.xml
    Par yizashi dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 02/04/2006, 17h20
  3. [Déploiement] Diffuser une application java
    Par lilli1407 dans le forum EDI et Outils pour Java
    Réponses: 2
    Dernier message: 31/01/2006, 16h49
  4. [D7][ORACLE 8i] déploiement d'une application
    Par Magnus dans le forum Bases de données
    Réponses: 3
    Dernier message: 03/10/2005, 16h40
  5. Réponses: 2
    Dernier message: 15/04/2002, 12h56

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