diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -19,6 +19,7 @@
 import Data.Maybe (fromMaybe)
 import GHC.IO.Exception
 import Control.Exception
+import Codec.Archive.Zip
 
 main :: IO ()
 main = defaultMainWithHooks $ simpleUserHooks
@@ -144,7 +145,8 @@
     response <- httpLBS request
     LBS.writeFile downloadPath (getResponseBody response)
     putStrLn "Download complete. Extracting..."
-    callProcess "unzip" ["-q", downloadPath, "-d", tmpDir]
+    archive <- toArchive <$> LBS.readFile downloadPath
+    extractFilesFromArchive [OptDestination tmpDir] archive
     let unpacked = tmpDir </> "libtorch"
     exists <- doesDirectoryExist unpacked
     let src = if exists then unpacked else tmpDir
diff --git a/libtorch-ffi.cabal b/libtorch-ffi.cabal
--- a/libtorch-ffi.cabal
+++ b/libtorch-ffi.cabal
@@ -1,6 +1,6 @@
 cabal-version:       3.0
 name:                libtorch-ffi
-version:             2.0.1.6
+version:             2.0.1.7
 -- The prefix(2.0) of this version("2.0.0.0") is the same as libtorch's one.
 synopsis:            Haskell bindings for PyTorch
 description:         This package provides Haskell bindings to libtorch, the C++ library underlying PyTorch, specifically designed for the Hasktorch ecosystem.
@@ -22,7 +22,8 @@
     process >= 1.6 && < 2,
     temporary >= 1.3 && < 2,
     http-conduit >= 2.3 && < 3,
-    bytestring >= 0.10 && < 1
+    bytestring >= 0.10 && < 1,
+    zip-archive >= 0.4 && < 1
 
 Flag cuda
  Description: A flag to link libtorch_cuda.
