Exécutable différent à chaque compilation

Flo1920 Messages postés 5 Date d'inscription mercredi 9 décembre 2020 Statut Membre Dernière intervention 10 décembre 2020 - 9 déc. 2020 à 14:58
Flo1920 Messages postés 5 Date d'inscription mercredi 9 décembre 2020 Statut Membre Dernière intervention 10 décembre 2020 - 10 déc. 2020 à 21:48
Bonjour,
J'ai récupéré un ancien projet en VB6 qui date de 15 ans, j'ai généré l'exécutable, et à ma surprise, il est différent de ce qui a été livré à l'époque.
Je ne modifie pas le code, je regénère une deuxième fois, et j'ai encore un autre exe différent des deux premiers.
Dans un domaine où on doit archiver les codes source et les livrables (Exe, dll..), je trouve que c'est dangereux de ne pas avoir le même output pour un même code.
Est-ce que vous pourriez m'expliquer ce comportement?
Je vous remercie d'avance pour votre réponse.

NB: J'ai essayé de compiler sans optimisation, mais le constat est le même.

8 réponses

Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
9 déc. 2020 à 16:39
Bonjour

Mes souvenirs de vb6 datent de l’époque de ton projet....
Cela dit ça m’interpelle aussi.

Peux-tu être plus précis concernant les différences que tu constates?
Je ne pense pas que ça me permettra de t’aider, mais il y encore quelques membres réguliers qui codent en vb6.

Autre choses, tu compiles sur la même machine qu’il y a 15 ans?
Même OS?
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
9 déc. 2020 à 17:55
Bonjour à vous deux
Pour Flo1920 : pouvez-vous aussi nous dire comment vous constatez les différences ? Est-ce des différences dans la visualisation du logiciel, dans son comportement ou autre ?
Le logiciel fonctionne-t-il correctement ?
Whismeril (que je salue ) vous a demandé : Autre choses, tu compiles sur la même machine qu’il y a 15 ans?
Même OS?

Cela est très important .
0
Flo1920 Messages postés 5 Date d'inscription mercredi 9 décembre 2020 Statut Membre Dernière intervention 10 décembre 2020
9 déc. 2020 à 18:15
Je vous remercie pour vos réponses.
Oui, je compile sur la même machine (XP).
La comparaison est visuelle pour le moment: Je compare le .exe avec WinMerge. Il y a plusieurs octets de différence. Ce qui m'obligera à faire une validation complète du soft.
Ce qui m'intrigue, c'est qu' à chaque compilation, le exe est différent. Je ne sais pas si le jeu d'instructions est le même. Je ne connais pas bien comment est foutu un exe VB.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
9 déc. 2020 à 18:23
Bonjour
Tu dis que tu génères l'exe ? Est-ce que tu fais un Setup d'installation pour installer ton logiciel de façon qu'il n'est plus nécessaire d'avoir VB 6 ouvert pour lancer ton logiciel ?
Car une fois le projet fini il faut créer un Setup d'installation afin que le logiciel soit installé sur ta machine .
0

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

Posez votre question
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
9 déc. 2020 à 19:43
Salut VB.

Flo, je ne savais pas qu'on pouvait comparer des binaires avec winmerge, il me semblait qu'il sert à comparer des fichiers textes.

A tu envisagé que ces quelques octets pourraient être les métadatas, genre la date et l'heure de compilation?
0
Flo1920 Messages postés 5 Date d'inscription mercredi 9 décembre 2020 Statut Membre Dernière intervention 10 décembre 2020
9 déc. 2020 à 21:43
@vb95: Ici je parle juste du .exe généré dans VB. L'exécution se fait sur une autre machine où il y a déjà une Vb Runtime. Je n'ai qu'à copier mon .exe au bon endroit et tout marche bien.
@Whismeril: WinMerge était juste pour voir rapidement si les 2 outputs étaient identiques, visiblement ils l'étaient pas.
Oui j'ai bien pensé aux métadatas, mais il y a beaucoup de différences et j'ai voulu avoir l'avis des connaisseurs ;-) Sincèrement, je ne sais pas ce que contient un exe Vb. Historiquement, dans d'autres environnements (embarqués), on générait nos binaires sous format s12, et là pour une version de code donnée, t'es sûr d'avoir exactement le même binaire.
Je continue à chercher, je vous tiens au jus s'il y a du nouveau.
Merci pour votre implication.
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
9 déc. 2020 à 23:23
Tu avais dit
plusieurs octets de différence
et maintenant
beaucoup de différences
...
Essaye de comparer avec un éditeur hexa décimal (XVI32 par exemple)
Si les différences sont du texte, tu pourras le voir
0
Flo1920 Messages postés 5 Date d'inscription mercredi 9 décembre 2020 Statut Membre Dernière intervention 10 décembre 2020 > Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024
10 déc. 2020 à 21:41
Même constat avec XVI32: Les deux exécutables sont différents.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
9 déc. 2020 à 21:54
bonjour
Tu dis : Ici je parle juste du .exe généré dans VB. L'exécution se fait sur une autre machine où il y a déjà une Vb Runtime. Je n'ai qu'à copier mon .exe au bon endroit et tout marche bien.
Ce n'est pas ainsi que l'on installe un logiciel . Il faut créer un Setup d'installation qui permet de créer les dépendances du logiciel dont on se sert et de vérifier si toutes les dll nécessaires sont présentes .
De plus VB 6 ainsi que Windows XP commencent sérieusement à dater et plus aucune mise à jour n'est proposée ni pour l'un ni pour l'autre .
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
9 déc. 2020 à 23:19
J'avais un projet VB6 que je déployais par simple copier/collé de l'exe.
Il n'y avait pas de dépendances particulières, le runtime était installé sur le PC cible, du coup le setup ne servait à rien
0
Flo1920 Messages postés 5 Date d'inscription mercredi 9 décembre 2020 Statut Membre Dernière intervention 10 décembre 2020
10 déc. 2020 à 21:48
Pas besoin dans mon cas de faire un Setup, tout est déjà en place et un copier coller suffit. Et même si je rajoute une dll, il suffit de l'enregistrer manuellement avec regsvr32.
Mon seul problème est le compilateur qui n'est pas "deterministe"
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 9 déc. 2020 à 23:28
Salut Whismeril
Cela est vrai pour certains projets VB 6 mais pour ceux qui utilisent des .ocx je crois me souvenir qu'il fallait les mettre sur le PC cible et les enregistrer dans la base de registres .
Alors qu'avec un Setup les .ocx sont compris dans le Setup d'installation ( évidemment lorsque l'on construit le Setup il faut les mentionner : ils ne s'y mettent pas tous seuls )

0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
9 déc. 2020 à 23:37
C'est bien pour ça que j'ai dit que je n'avais pas de dépendances particulières.
Quand bien même, la mise à jour peut s'effectuer par copier coller
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024
10 déc. 2020 à 01:45
Ah oui j'ai lu trop vite !
Désolé
0
Rejoignez-nous