Wenn wir nicht sicher wissen, welche Architektur beim Anwender vorliegt ist es ganz praktisch sowohl x86 als auch x64 kompilierte Programme bereitzustellen.
Die beiden dann als "MEIN_PROG_x86.exe" und "MEIN_PROG_x64.exe" in einen gemeinsamen Ordner (z.B. "bin") packen. Im selben Root, wie der Ordner, das Startprogramm "MEIN_PROG.exe" platzieren.
EDIT:
Hab mal noch ein paar kleine Änderunegn eingefügt, damit kein CMD-Window beim Aufruf flasht.
Nim
# Startprogramm mit Architekturerkennung Kompilieren als 32-Bit
# nim c --cpu:i386 --app:gui MEIN_PROG.nim
import osproc
import strutils
let
run32Bit = r".\bin\MEIN_PROG_x86.exe" # Pfad relativ zum Startprogramm
run64Bit = r".\bin\MEIN_PROG_x64.exe"
proc getWindowsArchitecture(): string =
let output = execProcess("wmic os get OSArchitecture", options={poUsePath, poStdErrToStdOut, poEvalCommand, poDaemon})
var arch = "32-Bit"
for line in output.splitlines():
if line.startsWith("64"):
arch = "64-Bit"
return arch
if getWindowsArchitecture() == "32-Bit":
discard execProcess(run32Bit, options={poUsePath, poStdErrToStdOut, poEvalCommand, poDaemon})
else:
discard execProcess(run64Bit, options={poUsePath, poStdErrToStdOut, poEvalCommand, poDaemon})
Alles anzeigen