Plusieurs *.exe dans un seul ???

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Plusieurs *.exe dans un seul ???

Message par PhM »

Bonjour,

j'aimerai savoir si il est possible de "rassembler" plusieurs programmes *.exe interdépendants en un seul ?

Par exemple, un programme "maitre" principal.exe déclenchant des programmes "esclaves" autonomes: esclave1.exe, esclave2.exe, esclave3.exe.

Le but étant d'obtenir qu'un seul exe. Dans l'exemple, ci-dessus, ne resterait que principal.exe avec les 3 autres programmes "cachés".

Désolé si la question vous semble curieuse...
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Plusieurs *.exe dans un seul ???

Message par microdevweb »

Bonjour, il est possible de lancer plusieurs exécutables et qu'il peuvent même communique entre eux avec les runtime.

On peut également créer des dll qui sont compilé et un peux comme des exécutables.

La troisième solution est également de diviser certaines parties de sont programme en threads (attention qu'il est nécessaire de les synchroniser, je compte faire prochainement un tuto la dessus).

Maintenant la meilleur solution dépend de ton problème à résoudre. Mais je penses que le multi-threads serait la solution la plus adaptée.

Un thread est un processus indépendant et non bloquant, il peut accéder cependant au variables globales et on lui passe en paramètre une variable qui peut être par exemple un pointeur sur une structure.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Plusieurs *.exe dans un seul ???

Message par Zorro »

sinon tu peux aussi grouper tout tes programmes dans un Executable

au moment du lancement, l'executable "pond" les programmes dans son dossier
ainsi sur le disque dur on se retrouve avec le programme principale, et les executables "pondu"
il peux les lancer (Runprogram()) , et lorsqu'on quitte le programme principal
il efface les executables (et avant s'occupe de les virer de la Ram ) ... il ne reste que le programme principal !

bien sur tout ceci sera tres mal vu par la plupart des anti-virus ...
un executable qui contient une ou plusieurs executable ressemble etrangement a un virus .. :mrgreen:
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Plusieurs *.exe dans un seul ???

Message par Zorro »

tu trouvera ici un moyen d'executer un executable incorporé en datasection

https://www.purebasic.fr/french/viewtop ... =6&t=14704
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: Plusieurs *.exe dans un seul ???

Message par PhM »

Merci pour toutes les pistes évoquées...
Je vais explorer tout cela maintenant !
Je n'ai jamais "créer" une DLL, ce sera ,peut-être, l'occasion.
Dernière modification par PhM le sam. 11/janv./2020 10:46, modifié 1 fois.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Plusieurs *.exe dans un seul ???

Message par Zorro »

sinon pour "pondre" un executable

tu peux utiliser ce vieux code de Flype :

Code : Tout sélectionner

; Façon Flype en procedure
Procedure.l BinToFile(FileName.s, *BinStart, *BinEnd)
    Protected id.l = CreateFile(#PB_Any, FileName)
    If id
        WriteData(id, *BinStart, *BinEnd - *BinStart)
        CloseFile(id)
    EndIf
EndProcedure

BinToFile("c:\bin1.exe", ?BIN_START1, ?BIN_END1)  ; ceci fait appel a la procedure qui va "pondre" les executables inclu
BinToFile("c:\bin2.exe", ?BIN_START2, ?BIN_END2)


DataSection
BIN_START1: IncludeBinary "TEST1.EXE" : BIN_END1:  ; <<<<- ici on inclu les executables dans notre programme
BIN_START2: IncludeBinary "TEST2.EXE" : BIN_END2: ; <<<<- ici on inclu les executables dans notre programme
EndDataSection 
Dernière modification par Zorro le sam. 11/janv./2020 10:49, modifié 1 fois.
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Plusieurs *.exe dans un seul ???

Message par microdevweb »

Maintenant si tu décris en gros le design de ton soft, on pourra mieu t'aider :wink:
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: Plusieurs *.exe dans un seul ???

Message par PhM »

C'est OK merci, j'ai toutes les pistes à explorer que je souhaitais...
La méthode :
; Façon Flype en procédure
semble extrêmement intéressante...
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Plusieurs *.exe dans un seul ???

Message par Marc56 »

PhM a écrit : j'aimerai savoir si il est possible de "rassembler" plusieurs programmes *.exe interdépendants en un seul ?
Par exemple, un programme "maitre" principal.exe déclenchant des programmes "esclaves" autonomes: esclave1.exe, esclave2.exe, esclave3.exe.

Le but étant d'obtenir qu'un seul exe.
Comme l'a précisé Zorro, inutile de dire que les AV vont bloquer ce genre de méthode (génération d'EXE).

Le système le plus propre est celui qui est utilisé par les programmes commerciaux pour garder l'empreinte mémoire la plus faible:
  • Un petit EXE qui sert de lanceur
  • Des EXE dans le même répertoire
  • Le tout packagé (par exemple avec l'excellent InnoSetup) Un seul raccourci vers l'EXE principal
PS. J'avais fait un petit tuto sur la façon de packager avec InnoSetup, y compris en mettant les versions 32 et 64 bits en même temps et en laissant le système choisir l'installation. Il est toujours valable avec la version 6 d'InnoSetup.


:wink:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Plusieurs *.exe dans un seul ???

Message par Kwai chang caine »

Marc56 a écrit :Comme l'a précisé Zorro, inutile de dire que les AV vont bloquer ce genre de méthode
Et si les autres exe sont zippés ou compacté par le format PB ?
Penses tu que ce sera toujours aussi mal vu ?
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Plusieurs *.exe dans un seul ???

Message par microdevweb »

Pour moi,

Si il s'agit de partager des ressources la librairie dynamique (dll / so) est le solution car elle peut-être utilisée par plusieurs exe et n'est chargée q'une seul fois.

Pour un soft modulaire, plusieurs exécutables installé par un installateur.

Pour du multitâche, le multi threading est la solution la plus adaptée.

Donc tout dépend de ce que l'on veux faire.

Maintenant n'oublions pas que la force de Pb est de pouvoir tout contenir dans un simple exécutable sans dépendance.
Dernière modification par microdevweb le lun. 13/janv./2020 10:14, modifié 1 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Plusieurs *.exe dans un seul ???

Message par Ar-S »

Sans connaître ton projet il est difficile de te répondre de façon juste.
L'incorporation inter exe cité par Zorro est pratique à l’exécution car parait plus "propre".
Mais il est clair que les AV risquent de faire la tronche. (peut être un peu moins si archivé KCC, mais ça demande en plus de désarchiver le truc à chaque lancement.)
En revanche, cette méthode sera pénible lorsque tu devras mettre à jour un des exe. Tu seras obligé de tout recompiler.. Donc à toi de juger selon ton projet.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
bpapon60
Messages : 2
Inscription : lun. 05/août/2019 16:09

Re: Plusieurs *.exe dans un seul ???

Message par bpapon60 »

Bonjour,
Désolé si je me greffe.
Dans la problématique d'appeler un .exe à partir d'un autre genre un menu.exe qui appelle un clients.exe et un produits.exe par exemple, peut-on comme en quickbasic partager des variables avec l'instruction COMMON mavariablepartagee présente dans tous les exe et en appelant les programmes à partir de MENU.EXE par un CHAIN 'CLIENTS.EXE' ou CHAIN 'PRODUITS' par exemple ?
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Plusieurs *.exe dans un seul ???

Message par Ar-S »

@bpapon60
Non.
Tu peux cependant passer des paramètres d'un exe à l'autre.
Voir ce topic récent : https://www.purebasic.fr/french/viewtop ... =1&t=17934
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre