Déploiment d'une application [Résolu]

Signaler
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
-
Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
-
Bonjour,
Voila, j'ai créé mon application à laquelle j'ai attaché un fichier d'aide en format .chm.
Quand je le lance depuis mon pc, l'aide s'ouvre sans problème.
Quand je cré mon SetUp à l'aide IsTool et InnoSetup, quand je lance mon exe en test sur machine virtuelle mon aide ne s'ouvre pas et je n'ai pas de message d'erreur rien... Au niveau de mon Setup j'insere mon fichier .exe ainsi que mon fichier .chm.
Quelqu'un a une idée? Faut-il mettre d'autres fichiers dans le setup?
Mon code pour ouvrir mon fichier d'aide :
ShellExecuteA(this->Handle,"open","[file://\\..\\HlpLAMA.chm \\..\\HlpLAMA.chm]" ,0,0,SW_NORMAL) ;

Je développe sous C++ builder 6
J'espere avoir été claire et j'espere que vous pourrez m'aider à trouver ma solution.

S.L.B.
<hr />

5 réponses

Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
1
Salut,


GetFileDir(Application->ExeName.c_str(),Path);
ch.sprintf("%s\\Aide.chm",Path);
ShellExecute(NULL,"open",ch.c_str(),NULL,NULL,SW_MAXIMIZE);

J'utilise les mêmes logiciel (C++ Builder 6 et innosetup)
Messages postés
1115
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
6 mai 2021
4
Salut,


Tient! LAMA ca me dit quelque chose !
Mais bon c'est pas le même, vu que c'est un concepte développé par une société d'un grand groupe international.


Pour en revenir à ton pb, en effet, quelque fois les machines virtuelles n'ont pas le même comportement que les machines réelles.
Si ton fichier chm est dans le répertoire supérieur, pourquoi ne fais-tu pas "..\\HlpLAMA.chm" dans les premiers "\".


Autre idée, il me semble que si le fichier est introuvable, des fois les erreurs n'apparaissent pas. Peux-tu tracer le répertoire courant de l'appli pour voir si sur la machine virtuelle il ne serait pas différents.(GetCurrentDirectory)
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
Salut Fregolo52 et merci de ta réponse.
Malheureusement j'ai testé tes deux solutions sans résultats... Mon fichier d'aide est au bon endroit.
En tout cas merci

S.L.B.
<hr />
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Salut,

C'est un peu risqué de tenté un chemin relatif dans ce cas là... Comme le dit fregolo52, rien ne dit que le dossier courant est le dossier de l'exécutable.

Je pense qu'il faut plutôt récupérer le chemin de l'exe à l'aide de GetModuleFileName, puis construire le chemin vers le chm à partir de celui-ci.

Tu peux tester le code de retour de ShellExecute.

Mais plutôt que d'utiliser ShellExecute, il est souvent préférable
d'employer CreateProcess, plus lourde à l'utilisation, mais tu peux
vérifier son code de retour, et afficher un message associé à la
dernière erreur Win32 en cas de problème. Exemple ici (Attention, démarrage avec SW_HIDE dans cet exemple, mettre SW_SHOW dans ton cas).
Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
1
Salut,

En fait la fonction GetFileDir est une fonction perso qui me permet de retrouver un Directory :

int GetFileDir(char * fic,char * pathCbl)
{
        int i;

        strcpy(pathCbl,fic);
        for(i=strlen(pathCbl);i>1;i--)
        {
          if(pathCbl[i]=='\\')
          {
            pathCbl[i]=0x00;
            return strlen(pathCbl);
          }
          pathCbl[i]=0x00;
        }
        return -1;
}

<li>Application->ExeName - Fonction standard borland, donne le directory de l'application</li><li>Path est un type String comme le ExeName , String est une class avec de nombreuses méthode de manipulation de chaines.</li><li>Pour transformer un String en char * on fait ch.c_str()</li>