diff --git a/dist/setup/index.js b/dist/setup/index.js
index 6fedd90..47108dd 100644
--- a/dist/setup/index.js
+++ b/dist/setup/index.js
@@ -89710,6 +89710,7 @@ const core = __importStar(__nccwpck_require__(7484));
 const tc = __importStar(__nccwpck_require__(3472));
 const exec = __importStar(__nccwpck_require__(5236));
 const path = __importStar(__nccwpck_require__(6760));
+const node_fs_1 = __nccwpck_require__(3024);
 const checksum_1 = __nccwpck_require__(5391);
 const constants_1 = __nccwpck_require__(6156);
 function downloadLatest(platform, arch, checkSum, githubToken) {
@@ -89721,11 +89722,13 @@ function downloadLatest(platform, arch, checkSum, githubToken) {
         }
         const downloadUrl = `https://github.com/${constants_1.OWNER}/${constants_1.REPO}/releases/latest/download/${artifact}${extension}`;
         core.info(`Downloading uv from "${downloadUrl}" ...`);
-        const downloadPath = yield tc.downloadTool(downloadUrl, `${artifact}${extension}`, githubToken);
+        const downloadPath = yield tc.downloadTool(downloadUrl, undefined, githubToken);
         let uvExecutablePath;
         let uvDir;
         if (platform === "pc-windows-msvc") {
-            uvDir = yield tc.extractZip(downloadPath);
+            const fullPathWithExtension = `${downloadPath}${extension}`;
+            yield node_fs_1.promises.copyFile(downloadPath, fullPathWithExtension);
+            uvDir = yield tc.extractZip(fullPathWithExtension);
             // On windows extracting the zip does not create an intermediate directory
             uvExecutablePath = path.join(uvDir, "uv.exe");
         }
@@ -89807,6 +89810,7 @@ exports.downloadVersion = downloadVersion;
 const core = __importStar(__nccwpck_require__(7484));
 const tc = __importStar(__nccwpck_require__(3472));
 const path = __importStar(__nccwpck_require__(6760));
+const node_fs_1 = __nccwpck_require__(3024);
 const constants_1 = __nccwpck_require__(6156);
 const checksum_1 = __nccwpck_require__(5391);
 const github = __importStar(__nccwpck_require__(3228));
@@ -89831,11 +89835,13 @@ function downloadVersion(platform, arch, version, checkSum, githubToken) {
         }
         const downloadUrl = `https://github.com/${constants_1.OWNER}/${constants_1.REPO}/releases/download/${resolvedVersion}/${artifact}${extension}`;
         core.info(`Downloading uv from "${downloadUrl}" ...`);
-        const downloadPath = yield tc.downloadTool(downloadUrl, `${artifact}${extension}`, githubToken);
+        const downloadPath = yield tc.downloadTool(downloadUrl, undefined, githubToken);
         yield (0, checksum_1.validateChecksum)(checkSum, downloadPath, arch, platform, resolvedVersion);
         let uvDir;
         if (platform === "pc-windows-msvc") {
-            uvDir = yield tc.extractZip(downloadPath);
+            const fullPathWithExtension = `${downloadPath}${extension}`;
+            yield node_fs_1.promises.copyFile(downloadPath, fullPathWithExtension);
+            uvDir = yield tc.extractZip(fullPathWithExtension);
             // On windows extracting the zip does not create an intermediate directory
         }
         else {
diff --git a/src/download/download-latest.ts b/src/download/download-latest.ts
index cd78358..edb8926 100644
--- a/src/download/download-latest.ts
+++ b/src/download/download-latest.ts
@@ -23,13 +23,15 @@ export async function downloadLatest(
 
   const downloadPath = await tc.downloadTool(
     downloadUrl,
-    `${artifact}${extension}`,
+    undefined,
     githubToken,
   );
   let uvExecutablePath: string;
   let uvDir: string;
   if (platform === "pc-windows-msvc") {
-    uvDir = await tc.extractZip(downloadPath);
+    const fullPathWithExtension = `${downloadPath}${extension}`;
+    await fs.copyFile(downloadPath, fullPathWithExtension);
+    uvDir = await tc.extractZip(fullPathWithExtension);
     // On windows extracting the zip does not create an intermediate directory
     uvExecutablePath = path.join(uvDir, "uv.exe");
   } else {
diff --git a/src/download/download-version.ts b/src/download/download-version.ts
index 6590050..3e9fb59 100644
--- a/src/download/download-version.ts
+++ b/src/download/download-version.ts
@@ -40,7 +40,7 @@ export async function downloadVersion(
 
   const downloadPath = await tc.downloadTool(
     downloadUrl,
-    `${artifact}${extension}`,
+    undefined,
     githubToken,
   );
   await validateChecksum(
@@ -53,7 +53,9 @@ export async function downloadVersion(
 
   let uvDir: string;
   if (platform === "pc-windows-msvc") {
-    uvDir = await tc.extractZip(downloadPath);
+    const fullPathWithExtension = `${downloadPath}${extension}`;
+    await fs.copyFile(downloadPath, fullPathWithExtension);
+    uvDir = await tc.extractZip(fullPathWithExtension);
     // On windows extracting the zip does not create an intermediate directory
   } else {
     const extractedDir = await tc.extractTar(downloadPath);