Accueil > > > MISE À JOUR DE VOS PROJETS PAR UNE DLL
MISE À JOUR DE VOS PROJETS PAR UNE DLL
Information sur la source
Description
bonjour,
voici une dll qui permet de mettre à jour vos projets (l'executable, vos datas (textures, son,...), tout ce qui se rapporte a votre projet)
je vous poste le lien pour télécharger le tout. car il y a un exe de test inclu.
(je n'ai pas mis la source de la dll car elle peut etre mise à jour souvent, mais juste la source exemple pour savoir comment construire vos projets)
cette dll repose sur une gestion de fichier xml qui doit accompagner chaque fichier à mettre à jour
je posterai surement la source de la dll quand j'aurais une version qui ne nécessitera plus de mise à jour.
à part l'algo, la plupart du code se base sur les autres sources que j'ai posté sur cppfrance (CFilex, CDownload).
-la gestion xml est la librairie tinyxml
-la gestion pour dezipper est une source de Gilles Vollant légérement modifiée
voici un exemple
Source
- include "stdafx.h"
- #include <windows.h>
- #include "darkupdate/darkupdate.h"
-
-
- UpdateGlobalListFunc UpdateGlobalList=NULL;
- TestFileFunc TestFile=NULL;
- InitializeFunc Initialize=NULL;
- DeleteGlobalListFunc DeleteGlobalList=NULL;
- LaunchInstallFunc LaunchInstall=NULL;
- UpdateDarkProjectFunc UpdateDarkProject=NULL;
- CreateFileVersionFunc CreateFileVersion=NULL;
- LaunchMeFromDosFunc LaunchMeFromDos=NULL;
- //LaunchMeFromWin32Func LaunchMeFromWin32=NULL;
- HINSTANCE Module=NULL;
-
- DLL_API void EventMessage(char *message)
- {
- printf("%s\n",message);
- }
-
- int main(int argc, char* argv[])
- {
-
- char MYPATH[4096],DLLMYPATH[4096],EXENAME[4096],FULLPATH[4096];
-
- GetModuleFileName(GetModuleHandle(NULL), MYPATH, 4096);
-
- strcpy(FULLPATH,MYPATH);
-
- char *ft=strrchr(MYPATH,'\\');
- if (ft) {
- ft++;
- strcpy(EXENAME,ft);
- *ft = 0x00;
- } else {
- strcpy(EXENAME,MYPATH);
- strcpy(MYPATH,".\\");
- }
-
-
-
- while (1) {
- strcpy(DLLMYPATH,MYPATH);
- strcat(DLLMYPATH,"DarkUpdate.dll");
-
- Module = LoadLibrary(DLLMYPATH);
-
- if (!Module) return NULL;
-
- UpdateGlobalList=(UpdateGlobalListFunc)GetProcAddress(Module, "UpdateGlobalList");
- TestFile=(TestFileFunc)GetProcAddress(Module, "TestFile");
- Initialize=(InitializeFunc)GetProcAddress(Module, "Initialize");
- DeleteGlobalList=(DeleteGlobalListFunc)GetProcAddress(Module, "DeleteGlobalList");
- LaunchInstall=(LaunchInstallFunc)GetProcAddress(Module, "LaunchInstall");
- UpdateDarkProject=(UpdateDarkProjectFunc)GetProcAddress(Module, "UpdateDarkProject");
- CreateFileVersion=(CreateFileVersionFunc)GetProcAddress(Module, "CreateFileVersion");
- LaunchMeFromDos=(LaunchMeFromDosFunc)GetProcAddress(Module, "LaunchMeFromDos");
- //LaunchMeFromWin32=(LaunchMeFromWin32Func)GetProcAddress(Module, "LaunchMeFromWin32");
-
- Initialize(EventMessage); // pour afficher les messages
-
- if (LaunchMeFromDos(FULLPATH,argc,argv)) {
- FreeLibrary(Module); //si on rentre la, soit ya eu une erreur -1, soit on a executé le tmp
- return 0;
- }
-
- // si on arrive ici, on est dans le fichier temp
-
-
- if (UpdateDarkProject(DLLMYPATH) == 1) { // on met à jour la darkupdate.dll
- char NEWDLL[4096];
- FreeLibrary(Module);
- strcpy(NEWDLL,MYPATH);
- strcat(NEWDLL,"DarkUpdate.xxx");
- DeleteFile(DLLMYPATH);
- MoveFile(NEWDLL,DLLMYPATH);
- } else break;
- }
-
- CreateFileVersion("1.1",MYPATH,"demo"); // on creer le fichier xml
- char globallist[4096];
- char xmlpath[4096];
-
- UpdateGlobalList("http://dark.freezee.org/darkupdate/demolist.php",globallist,4096); // recuperation de la liste
-
-
-
-
- if (TestFile(FULLPATH,"demo",globallist,"demoversion",xmlpath,4096)) { //nouvelle version ?
- char *exe=strrchr(FULLPATH,'.'); // necessaire de transformer le .tmp en .exe sinon la mise a jour de l'exe ne passera pas
- if (exe) strcpy(exe,".exe"); //malgres cette petite contraite, cela permet de mettre a jour l'exe meme si on change le nom de celui-ci
- int r=LaunchInstall(FULLPATH,xmlpath); // mise à jour effectuée si r==1
-
- }
-
-
- for (int j=0;j<argc;j++) printf("%s\n",argv[j]);
-
-
- /*
-
- la suite de votre programme ici
-
- exemple:
-
- if (TestFile("f:\\sound.wav","sound",globallist,"data",xmlpath,4096)) {
- int r=LaunchInstall("f:\\sound.wav",xmlpath);
- }
-
- playsound("f:\\sound.wav");
-
- */
-
- DeleteGlobalList(globallist);
- FreeLibrary(Module);
-
- return 0;
- }
-
include "stdafx.h"
#include <windows.h>
#include "darkupdate/darkupdate.h"
UpdateGlobalListFunc UpdateGlobalList=NULL;
TestFileFunc TestFile=NULL;
InitializeFunc Initialize=NULL;
DeleteGlobalListFunc DeleteGlobalList=NULL;
LaunchInstallFunc LaunchInstall=NULL;
UpdateDarkProjectFunc UpdateDarkProject=NULL;
CreateFileVersionFunc CreateFileVersion=NULL;
LaunchMeFromDosFunc LaunchMeFromDos=NULL;
//LaunchMeFromWin32Func LaunchMeFromWin32=NULL;
HINSTANCE Module=NULL;
DLL_API void EventMessage(char *message)
{
printf("%s\n",message);
}
int main(int argc, char* argv[])
{
char MYPATH[4096],DLLMYPATH[4096],EXENAME[4096],FULLPATH[4096];
GetModuleFileName(GetModuleHandle(NULL), MYPATH, 4096);
strcpy(FULLPATH,MYPATH);
char *ft=strrchr(MYPATH,'\\');
if (ft) {
ft++;
strcpy(EXENAME,ft);
*ft = 0x00;
} else {
strcpy(EXENAME,MYPATH);
strcpy(MYPATH,".\\");
}
while (1) {
strcpy(DLLMYPATH,MYPATH);
strcat(DLLMYPATH,"DarkUpdate.dll");
Module = LoadLibrary(DLLMYPATH);
if (!Module) return NULL;
UpdateGlobalList=(UpdateGlobalListFunc)GetProcAddress(Module, "UpdateGlobalList");
TestFile=(TestFileFunc)GetProcAddress(Module, "TestFile");
Initialize=(InitializeFunc)GetProcAddress(Module, "Initialize");
DeleteGlobalList=(DeleteGlobalListFunc)GetProcAddress(Module, "DeleteGlobalList");
LaunchInstall=(LaunchInstallFunc)GetProcAddress(Module, "LaunchInstall");
UpdateDarkProject=(UpdateDarkProjectFunc)GetProcAddress(Module, "UpdateDarkProject");
CreateFileVersion=(CreateFileVersionFunc)GetProcAddress(Module, "CreateFileVersion");
LaunchMeFromDos=(LaunchMeFromDosFunc)GetProcAddress(Module, "LaunchMeFromDos");
//LaunchMeFromWin32=(LaunchMeFromWin32Func)GetProcAddress(Module, "LaunchMeFromWin32");
Initialize(EventMessage); // pour afficher les messages
if (LaunchMeFromDos(FULLPATH,argc,argv)) {
FreeLibrary(Module); //si on rentre la, soit ya eu une erreur -1, soit on a executé le tmp
return 0;
}
// si on arrive ici, on est dans le fichier temp
if (UpdateDarkProject(DLLMYPATH) == 1) { // on met à jour la darkupdate.dll
char NEWDLL[4096];
FreeLibrary(Module);
strcpy(NEWDLL,MYPATH);
strcat(NEWDLL,"DarkUpdate.xxx");
DeleteFile(DLLMYPATH);
MoveFile(NEWDLL,DLLMYPATH);
} else break;
}
CreateFileVersion("1.1",MYPATH,"demo"); // on creer le fichier xml
char globallist[4096];
char xmlpath[4096];
UpdateGlobalList("http://dark.freezee.org/darkupdate/demolist.php",globallist,4096); // recuperation de la liste
if (TestFile(FULLPATH,"demo",globallist,"demoversion",xmlpath,4096)) { //nouvelle version ?
char *exe=strrchr(FULLPATH,'.'); // necessaire de transformer le .tmp en .exe sinon la mise a jour de l'exe ne passera pas
if (exe) strcpy(exe,".exe"); //malgres cette petite contraite, cela permet de mettre a jour l'exe meme si on change le nom de celui-ci
int r=LaunchInstall(FULLPATH,xmlpath); // mise à jour effectuée si r==1
}
for (int j=0;j<argc;j++) printf("%s\n",argv[j]);
/*
la suite de votre programme ici
exemple:
if (TestFile("f:\\sound.wav","sound",globallist,"data",xmlpath,4096)) {
int r=LaunchInstall("f:\\sound.wav",xmlpath);
}
playsound("f:\\sound.wav");
*/
DeleteGlobalList(globallist);
FreeLibrary(Module);
return 0;
}
Conclusion
téléchargeable ici : http://dark.freezee.org/darkupdate/demo1.0.zip
co nsulter le fichier texte pour la documentation
Historique
- 28 janvier 2006 15:05:46 :
- correction de la dll et de l'exemple
- 29 janvier 2006 00:12:59 :
- .
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Un projet I.A en C++!!!!!!!!!!!!!!! [ par armand44 ]
Sur le frere de ce site en VB ils ont commencés un projet en VB pour une I.A "les nurmites" sa serait cool que ici vous en fassiez un pour voir qui fe
Dev d'un projet en c++ [ par mc.solaar3 ]
J'ai envie de faire un projet c++, qui permet de chercher la voiture correspondant le mieux aux préférence de l'utilisateur : (prix, sécurité, comfort
DEV d'un projet c++ [ par mc.solaar3 ]
Je tente de créer un programme qui constituerait un guide d'achat automobiles. Ce programme tiendra compte de nombreuses données et de nombreuses pré
soft : catalogue automobile [ par mc.solaar3 ]
Je tente de créer un programme qui constituerait un guide d'achat automobiles. Ce programme tiendra compte de nombreuses données et de nombreuses préf
Projet : voice-chat [ par Bog. ]
Salut, comme le sujet de ce message l'indique, je voudrais réaliser un programme de communication vocale (voice-chat) destiné au reseau internet. Etan
Composant COM [ par kawazaki ]
Salut a tous et a toutes Je commence a développer un composant COM en Visual C++ (ATL) permet de gérer les accés simultanées aux produits, dans les s
problèmes liens entre fichiers C et C++ dans un projet Visual C++ 6.0 [ par nico ]
J'ai récupéré un projet contenant des fichiers écrits en C. Le fichier "principal" de ce projet également écrit en C fait appel à des fonctions se tro
Qui à l'intention de créer un projet simple sur les base de données ? [ par Lallthis ]
Le genre de projet où on ouvre un base, on écris dedans,et on recherche un élément.
XML en C++ [ par The_Legacy ]
Bonjour tout le monde,Je fais appel à votre aide car je suis dans un cas désespéré. Je ne suis pas un pro du C++, disons que je m'en sors, mais je doi
Comment joindre des fichiers sources à un projet existant? [ par abba ]
Salut, Comment joindre des fichiers sources à un projet existant?ex: source.cpp et source.h à ajouter à mon projet.@+
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MATRICE TEMPLATEMATRICE TEMPLATE par hjr2610
Cliquez pour lire la suite par hjr2610 RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|