diff --git a/.gitlab/ci.sh b/.gitlab/ci.sh
index 6a8ac0f602fc3771702b7e38dd7543cfbad3d1aa..8734c975f4573271e561c538c4b88f5f9a4c9f56 100755
--- a/.gitlab/ci.sh
+++ b/.gitlab/ci.sh
@@ -441,15 +441,24 @@ function test_hadrian() {
     return
   fi
 
+
   cd _build/bindist/ghc-*/
-  run ./configure --prefix="$TOP"/_build/install
-  run "$MAKE" install
+  case "$(uname)" in
+    MSYS_*|MINGW*)
+      mkdir -p "$TOP"/_build/install
+      cp -a * "$TOP"/_build/install
+      ;;
+    *)
+      run ./configure --prefix="$TOP"/_build/install
+      run "$MAKE" install
+      ;;
+  esac
   cd ../../../
 
   run_hadrian \
     test \
     --summary-junit=./junit.xml \
-    --test-compiler="$TOP"/_build/install/bin/ghc \
+    --test-compiler="$TOP/_build/install/bin/ghc$exe" \
     "runtest.opts+=${RUNTEST_ARGS:-}"
 }