diff --git a/src/lib/dxvk.rs b/src/lib/dxvk.rs
index 62c801f..420a358 100644
--- a/src/lib/dxvk.rs
+++ b/src/lib/dxvk.rs
@@ -101,7 +101,7 @@ impl Version {
                 let output = std::process::Command::new("bash")
                     .arg(&apply_path)
                     .arg("install")
-                    .env("WINE", wine_path)
+                    .env("WINEARCH", "win64")
                     .env("WINESERVER", wineserver_path)
                     .env("WINEPREFIX", prefix_path.to_string())
                     .output()?;
diff --git a/src/lib/game.rs b/src/lib/game.rs
index 920d63e..c707cfa 100644
--- a/src/lib/game.rs
+++ b/src/lib/game.rs
@@ -115,6 +115,7 @@ pub fn run(debug: bool) -> std::io::Result<()> {
 
     // Setup environment
 
+    command.env("WINEARCH", "win64");
     command.env("WINEPREFIX", &config.game.wine.prefix);
 
     // Add DXVK_ASYNC=1 for dxvk-async builds automatically
diff --git a/src/lib/wine_prefix.rs b/src/lib/wine_prefix.rs
index d03bdb4..2a87b30 100644
--- a/src/lib/wine_prefix.rs
+++ b/src/lib/wine_prefix.rs
@@ -1,5 +1,5 @@
 use std::path::Path;
-use std::process::Command;
+use std::process::{Command, Output};
 
 #[derive(Debug, Clone)]
 pub struct WinePrefix {
@@ -15,38 +15,39 @@ impl WinePrefix {
         Path::new(&format!("{}/drive_c", self.path)).exists()
     }
 
-    fn wineboot<T: ToString>(&self, runners_folder: T, runner: super::wine::Version, command: &str) -> std::io::Result<()> {
+    fn wineboot<T: ToString>(&self, runners_folder: T, runner: super::wine::Version, command: &str) -> std::io::Result<Output> {
         let runners_folder = runners_folder.to_string();
 
         let wineboot = format!("{}/{}/{}", &runners_folder, runner.name, runner.files.wineboot);
         let wineserver = format!("{}/{}/{}", &runners_folder, runner.name, runner.files.wineserver);
 
-        Command::new(wineboot)
+        let mut wineboot = Command::new(wineboot);
+
+        wineboot.env("WINEARCH", "win64")
             .env("WINESERVER", wineserver)
             .env("WINEPREFIX", &self.path)
-            .arg(command)
-            .output()?;
+            .arg(command);
 
-        Ok(())
+        Ok(wineboot.output()?)
     }
 
-    pub fn update<T: ToString>(&self, runners_folder: T, runner: super::wine::Version) -> std::io::Result<()> {
+    pub fn update<T: ToString>(&self, runners_folder: T, runner: super::wine::Version) -> std::io::Result<Output> {
         self.wineboot(runners_folder, runner, "-u")
     }
 
-    pub fn end<T: ToString>(&self, runners_folder: T, runner: super::wine::Version) -> std::io::Result<()> {
+    pub fn end<T: ToString>(&self, runners_folder: T, runner: super::wine::Version) -> std::io::Result<Output> {
         self.wineboot(runners_folder, runner, "-e")
     }
 
-    pub fn kill<T: ToString>(&self, runners_folder: T, runner: super::wine::Version) -> std::io::Result<()> {
+    pub fn kill<T: ToString>(&self, runners_folder: T, runner: super::wine::Version) -> std::io::Result<Output> {
         self.wineboot(runners_folder, runner, "-k")
     }
-    
-    pub fn restart<T: ToString>(&self, runners_folder: T, runner: super::wine::Version) -> std::io::Result<()> {
+
+    pub fn restart<T: ToString>(&self, runners_folder: T, runner: super::wine::Version) -> std::io::Result<Output> {
         self.wineboot(runners_folder, runner, "-r")
     }
 
-    pub fn shutdown<T: ToString>(&self, runners_folder: T, runner: super::wine::Version) -> std::io::Result<()> {
+    pub fn shutdown<T: ToString>(&self, runners_folder: T, runner: super::wine::Version) -> std::io::Result<Output> {
         self.wineboot(runners_folder, runner, "-s")
     }
 }