didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 2017
-
13 janv. 2012 à 21:31
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 2016
-
24 janv. 2012 à 13:47
Bonjour à tous,
J'ai dans un fichier .rc une liste de fichiers auquels je souhaiterais accéder plus tard. Aprés la compilation les dits fichiers ne sont pas inclus dans l'exe généré.
Est-ce qu'il est possible d'inclure un dossier dans un exe afin d'y accéder utlérieurement ?
Pour le moment, si je veux accéder à ces fichiers je dois placer le répertoire "bin" avec l'exe.
Ce que je souhaiterais c'est que ces fichiers soient directement inclus dans l'exe.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 14 janv. 2012 à 19:27
Salut,
Il est possible d'utiliser d'abord un outil comme Tugzip pour mettre le dossier contenant tes fichiers dans une seule archive CAB. Cette archive CAB sera incluse comme ressource binaire à ton exécutable. Ce dernier pourra l'extraire là où tu veux en gardant l'arborescence originale.
Pour manipuler les archives CAB, Microsoft fournit un "Cabinet SDK" se basant sur les fonctions exportées par "cabinet.dll" disponible dans toutes les versions de Windows.
L'autre solution, fastidieuse si tu as beaucoup de fichiers à mettre en ressources, consiste à mettre dans ton fichier rc un identificateur pour chaque fichier à inclure. Les dossiers seront créés à l'exécution de ton programme.
Si s'était possible de mettre plusieurs fichiers dans une même ressource, je ne vois pas comment ton programme fera pour les distinguer avant de les extraire.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 21 janv. 2012 à 10:52
Salut,
Estimant que cela pourrait intéresser d'autres personnes, et en voulant mettre à jour un de mes anciens codes sous VC6 pour l'adapter et le déposer sur le site, je me suis apperçu que le "Cabinet SDK" n'est plus nécessaire puisqu'il est intégré par défaut aux versions plus récentes de Visual C/C++.
J'espère avoir un peu de temps libre ce week end pour le finaliser et le déposer sur cppfrance.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201625 24 janv. 2012 à 13:47
Salut,
une méthode possible :
Créer un "compound file" avec StgCreateStorageEx() qui donne un IStream et crée un fichier "pak".
Insérer autant de fichiers nommés que necessaire dans ce pak.
Inclure ce fichier dans les ressources de l'exe.
(éventuellemnt on peut le compresser)
Puis faire l'opération inverse lors de l'utilisation :
Extraire la resource de l'exe en tant que fichier "pak" et piocher dedans en ouvrant des stream nommés comme si c'était des fichiers physique.