«
»
Fusionner les installateurs en 32 et 64 bits en 4 étapes

Fusionner les installateurs en 32 et 64 bits en 4 étapes

En 2020, force est de constater qu’il existe encore un parc, non négligeable, de PC en Windows 7 et 8.1 en 32 bits, voire encore Windows XP (hé oui!). Une version 32 bits serait compatible avec tout le monde mais vous souhaitez quand même proposer une version 64 bits pour les PC récents. Proposez les deux automatiquement !

WinDev permet de créer un installateur 32 bits, un autre 64 bits, il peut même les créer durant la même opération, mais n’est pas capable de mettre le tout dans un seul fichier exécutable (facile à télécharger sur votre site). Voici donc la manière de faire avec 7zip !

  • 1) Dans WinDev, pas le choix de créer 2 configurations de projet
  • 2) Choisissez ensuite « Générer une installation combinée 32/64bits » dans le menu. Dès la première étape, vous pourrez créer les installations individuelles en cochant la case correspondante pour chaque configuration si ce n’est pas déjà fait. Attention, si vous faites les installateurs en-dehors de cet assistant, veillez à choisir « Répertoire unique » à la fin. À la fin de l’assistant, choisissez le répertoire final, par exemple « install_combinée ».



  • 3) Compressez en 7zip le contenu du répertoire « install_combinée »
    s7ZIP est une chaine	= fRépertoireTemp+["\"]+"MonProjetTestInstall"+".7z"
    sEXE est une chaine	= fRépertoireTemp+["\"]+"MonProjetTestInstall32&64"+".EXE"
    sRepInstallCombinée est une chaine = "C:\Mes Projets\MonProjetTest\install_combinée"
    sNomInstallateur3264 est une chaine = sRepInstallCombinée+["\"]+"MonProjetTestInstall32&64"+".EXE"
    fSupprime(s7ZIP);fSupprime(sEXE);fSupprime(sNomInstallateur3264)	//nettoyage de départ
    Jauge_7Z..BorneMax=fRepTaille(sRepInstallCombinée)
    sFichiers est une chaîne = fListeFichier(ComplèteRep(sRepInstallCombinée)+"*.*")
    sArchive est une chaîne = "7zipArchive"
    nErr est un entier = zipCrée(sArchive,s7ZIP)
    SI nErr=0 ALORS
    	nErr=zipAjouteRépertoire(sArchive,sRepInstallCombinée,Vrai,zipRépertoire,"",Jauge_7Z..Nom)
    	zipFerme(sArchive)
    FIN
  • 4) Créer le fichier final en concaténant plusieurs éléments, dont l’archive ci-dessus et le fichier 7zS2.sfx :
    SI nErr>0 ALORS 
    	Erreur(zipMsgErreur(nErr))	//afficher l'erreur si l'archive n'a pas été créée
    SINON
    	sVersion est une chaine = "1.01"
    	sNom est une chaine = "Mon super logiciel"
    	sConfig est une chaîne = [
    		;!@Install@!UTF-8!
    		Title="%1 v%2"
    		BeginPrompt="Install %1 v%2?"
    		RunProgram="INSTALL.EXE"
    		;!@InstallEnd@!
    	]
     
    	bufConfig est un buffer = ChaîneConstruit(sConfig,sNom,sVersion)
    	SI PAS fAjouteBuffer(sEXE,fChargeBuffer("C:\temp"+["\"]+"7zS2.sfx")) ALORS Erreur(ErreurInfo(errMessage));RETOUR	//commencer par le fichier 7zS2.sfx (ne pas oublier de changer pour son chemin sur votre poste)
    	SI PAS fAjouteBuffer(sEXE,bufConfig) ALORS Erreur(ErreurInfo(errMessage));RETOUR					//ajouter une chaine spéciale contenant le nom du programme et sa version
    	SI PAS fAjouteBuffer(sEXE,fChargeBuffer(s7ZIP)) ALORS Erreur(ErreurInfo(errMessage));RETOUR				//terminer par le fichier 7zip créé à l'étape 3
    	SI PAS fSupprime(s7ZIP) ALORS Erreur(ErreurInfo(errMessage));RETOUR
    	SI PAS fRenomme(sEXE,sNomInstallateur3264) ALORS Erreur(ErreurInfo(errMessage));RETOUR					//mettre le fichier final dans le répertoire d'installation
    	ToastAffiche("L'installateur a été créé")
    FIN

Pour plus de renseignements (notamment pour d’autres options), recherchez « 7z setup sfx small » dans votre moteur de recherche préféré.