Page 1 sur 1
[..] compilation x64 - x86
Posté : mer. 08 févr. 2012 14:22
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
Re: [..] compilation x64 - x86
Posté : mer. 08 févr. 2012 14:31
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
Re: [..] compilation x64 - x86
Posté : mer. 08 févr. 2012 14:33
par silvere
Laddy, Oui mais le problème est que si tu compile en x86 et que tu exécute sur un x64.
Re: [..] compilation x64 - x86
Posté : mer. 08 févr. 2012 14:34
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!
Re: [..] compilation x64 - x86
Posté : mer. 08 févr. 2012 14:43
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

Re: [..] compilation x64 - x86
Posté : mer. 08 févr. 2012 14:43
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.
Re: [..] compilation x64 - x86
Posté : mer. 08 févr. 2012 14:54
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.
Re: [..] compilation x64 - x86
Posté : mer. 08 févr. 2012 14:56
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?
Re: [..] compilation x64 - x86
Posté : mer. 08 févr. 2012 15:57
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.
Re: [..] compilation x64 - x86
Posté : mer. 08 févr. 2012 21:02
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.
Re: [..] compilation x64 - x86
Posté : mer. 08 févr. 2012 22:52
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

Re: [..] compilation x64 - x86
Posté : jeu. 09 févr. 2012 00:52
par jchd
... et la marmotte, elle ...