Déploiment d'une application

Résolu
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009 - 2 déc. 2008 à 08:10
JejeLand Messages postés 111 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 5 août 2011 - 5 déc. 2008 à 08:55
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

JejeLand Messages postés 111 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 5 août 2011 1
3 déc. 2008 à 17:21
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)
3
fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 3
2 déc. 2008 à 10:25
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)
0
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
2 déc. 2008 à 10:58
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 />
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
2 déc. 2008 à 20:05
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).
0

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

Posez votre question
JejeLand Messages postés 111 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 5 août 2011 1
5 déc. 2008 à 08:55
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>
0