[..] compilation x64 - x86

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

[..] compilation x64 - x86

#1

Message par ricky »

Hello,

j'aimerais savoir s'il y a la possibilité de compiler du code selon le type de compilation.

Exemple :

si la compilation se fait en x86 j'aimerais que le script prenne :

Code : Tout sélectionner

$tempFile = @tmpdir & "/test.msi"
FileInstall("test.msi", $tempFile, 1)
ShellExecuteWait($tempFile, "/passive /norestart", "", "open")
sinon qu'il prenne :

Code : Tout sélectionner

$tempFile = @tmpdir & "/test_x64.msi"
FileInstall("test_x64.msi", $tempFile, 1)
ShellExecuteWait($tempFile, "/passive /norestart", "", "open")
Merci d'avance pour votre aide
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] compilation x64 - x86

#2

Message par Laddy »

Bonjour ricky

je ne sais pas si j'ai juste mais avec les macros pour détecter le type d'architecture ça ne pourrait pas jouer ?

Code : Tout sélectionner

if @OSArch = "X86" Then
$tempFile = @tmpdir & "/test.msi"
FileInstall("test.msi", $tempFile, 1)
ShellExecuteWait($tempFile, "/passive /norestart", "", "open")
Else
$tempFile = @tmpdir & "/test_x64.msi"
FileInstall("test_x64.msi", $tempFile, 1)
ShellExecuteWait($tempFile, "/passive /norestart", "", "open")
EndIf
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] compilation x64 - x86

#3

Message par silvere »

Laddy, Oui mais le problème est que si tu compile en x86 et que tu exécute sur un x64.
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] compilation x64 - x86

#4

Message par ricky »

Non, car le but au final et d'avoir un exe pour le 32 bits et un pour le 64 bits et que le bon msi soit compilé dans le bon exe et non les deux dans le même. Sinon, comme je fais à l'heure actuelle, j'ai deux scrpits au3 (1 pour le 32 bits et 1 pour le 64bits) et si je modifie qqch dans le 32, je dois pas oublier de le faire dans le 64!
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] compilation x64 - x86

#5

Message par Laddy »

silvere a écrit :Laddy, Oui mais le problème est que si tu compile en x86 et que tu exécute sur un x64.
Bonjour Silvere, je ne vois pas le problème. Un programme compilié sur un x86 fonctionne sans problème sur un x64
Peux tu préciser ta pensée.

ricky > personnellement dans mes codes si j'ai des différentes entre x86 et x64 je détecte l'architecture du pc pour executer telle ou telle partie.
Appremment je n'ai pas compris la question. Va laisser les pros répondrent :oops:
Modifié en dernier par Laddy le mer. 08 févr. 2012 14:54, modifié 3 fois.
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] compilation x64 - x86

#6

Message par silvere »

Oui, mais avec ton scripte si il est compiler en 86 puis exécuter en 64 il va dire qu'il est compiler en 64.
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] compilation x64 - x86

#7

Message par Laddy »

silvere a écrit :Oui, mais avec ton scripte si il est compiler en 86 puis exécuter en 64 il va dire qu'il est compiler en 64.
Je n'ai pas ce genre de problème avec mes compilitations faites sous xp 32 bit et executer sous win 7 64 bit.
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] compilation x64 - x86

#8

Message par ricky »

Voici une explication en terme de chiffre :
test.msi = 150 MB
test_x64.msi = 155 MB

Le but au final est d'avoir :
install_test.exe = 150MB
install_test_x64.exe = 155 MB

Mais en utilisant ta solution :
Laddy a écrit :

Code : Tout sélectionner

if @OSArch = "X86" Then
$tempFile = @tmpdir & "/test.msi"
FileInstall("test.msi", $tempFile, 1)
ShellExecuteWait($tempFile, "/passive /norestart", "", "open")
Else
$tempFile = @tmpdir & "/test_x64.msi"
FileInstall("test_x64.msi", $tempFile, 1)
ShellExecuteWait($tempFile, "/passive /norestart", "", "open")
EndIf
Mes fichiers au final feront :

install_test.exe = 305 MB
install_test_x64.exe = 305 MB

Car dans les deux exe, il a pris le 32 et la 64 bits mais ne va qu'installer celui adapté à l'architecture de l'os!
Est-ce plus clair?
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] compilation x64 - x86

#9

Message par Iste »

Le FileInstall() étant une directive préprocesseur il n'y a en effet pas moyen de jouer avec le code pour se débarrasser d'un.

Vous devez préciser au moment de la compilation les fichiers que vous voulez inclure avec l'exe

Donc non, pas de solution pour vous, a moins de créer un script de précompilation qui fera le boulot a votre place.
Signez ici
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] compilation x64 - x86

#10

Message par jchd »

Oui, ou plus simplement deux scripts 'main' qui ne diffèrent que dans la partie '_x64' et qui #include tout ce qui est commun, c.à.d. 99.99% du reste.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] compilation x64 - x86

#11

Message par TT22 »

silvere a écrit :Oui, mais avec ton scripte si il est compiler en 86 puis exécuter en 64 il va dire qu'il est compiler en 64.
On ne peu pas exécuter un script x86 en x64.
Sur un ordi x64, quand on lance un script en 32bits, il faut tout un tas de choses pour pouvoir le lancer (qui se trouvent dans C:\Windows\SysWoW64\).
Mais le script est quand même en lancé en 32b, mais adapté pour être lu par un OS 64.

Et sur un windows x64, quand regarde les processus dans taskmgr.exe, si le logiciel est un 32b, on voit "NomDuLogiciel.exe*32".

Donc, un script x86 ne peux pas dire qu'il est lancé en x64 :P
Cordialement,
TT22
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] compilation x64 - x86

#12

Message par jchd »

... et la marmotte, elle ...
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre