Exécutable différent à chaque compilation

Signaler
Messages postés
5
Date d'inscription
mercredi 9 décembre 2020
Statut
Membre
Dernière intervention
10 décembre 2020
-
Messages postés
5
Date d'inscription
mercredi 9 décembre 2020
Statut
Membre
Dernière intervention
10 décembre 2020
-
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

Messages postés
15346
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 janvier 2021
494
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?
Messages postés
2314
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
5 janvier 2021
120
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 .
Messages postés
5
Date d'inscription
mercredi 9 décembre 2020
Statut
Membre
Dernière intervention
10 décembre 2020

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.
Messages postés
2314
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
5 janvier 2021
120
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 .
Messages postés
15346
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 janvier 2021
494
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?
Messages postés
5
Date d'inscription
mercredi 9 décembre 2020
Statut
Membre
Dernière intervention
10 décembre 2020

@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.
Messages postés
15346
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 janvier 2021
494
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
Messages postés
5
Date d'inscription
mercredi 9 décembre 2020
Statut
Membre
Dernière intervention
10 décembre 2020
>
Messages postés
15346
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 janvier 2021

Même constat avec XVI32: Les deux exécutables sont différents.
Messages postés
2314
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
5 janvier 2021
120
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 .
Messages postés
15346
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 janvier 2021
494
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
Messages postés
5
Date d'inscription
mercredi 9 décembre 2020
Statut
Membre
Dernière intervention
10 décembre 2020

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"
Messages postés
2314
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
5 janvier 2021
120
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 )

Messages postés
15346
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 janvier 2021
494
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
Messages postés
2314
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
5 janvier 2021
120 >
Messages postés
15346
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 janvier 2021

Ah oui j'ai lu trop vite !
Désolé