diff --git a/lib/GHCup.hs b/lib/GHCup.hs
index eba55bbbf09721730796d0ffef71f728069b8287..7532b1a3bb2f6e3b6406f79399a56f3319f3e038 100644
--- a/lib/GHCup.hs
+++ b/lib/GHCup.hs
@@ -1637,7 +1637,7 @@ upgradeGHCup mtarget force = do
   let fn = "ghcup" <> exeExt
   p <- liftE $ download settings dli tmp (Just fn)
   let destDir = takeDirectory destFile
-      destFile = fromMaybe (binDir </> fn) mtarget
+      destFile = fromMaybe (binDir </> (fn <> exeExt)) mtarget
   lift $ $(logDebug) [i|mkdir -p #{destDir}|]
   liftIO $ createDirRecursive' destDir
   lift $ $(logDebug) [i|rm -f #{destFile}|]