From df5947f8bb7000e34b349b8b28fee48ee6775194 Mon Sep 17 00:00:00 2001 From: claude-bot Date: Mon, 27 Jul 2026 00:39:18 +0900 Subject: [PATCH] =?UTF-8?q?fix(installer):=20=EC=B5=9C=EC=A2=85=20?= =?UTF-8?q?=EB=A6=AC=EC=86=8C=EC=8A=A4=ED=8C=A9=20=EB=8B=A4=EC=9A=B4?= =?UTF-8?q?=EB=A1=9C=EB=93=9C=20=EC=8B=A4=ED=8C=A8=20=EC=8B=9C=20=EB=B6=80?= =?UTF-8?q?=EB=B6=84=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit downloadStream 실패 시 .mc_custom/resourcepacks/<파일>.zip 에 0바이트/부분 다운로드 파일이 남아 마인크래프트 리소스팩 목록에 깨진 채로 노출될 수 있던 문제 수정. finalResourcepack:install catch 에서 대상 zip 을 삭제. 0.4.19→0.4.20. Co-Authored-By: Claude Opus 4.7 --- package.json | 2 +- src/installer/main.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c2feee1..a138d10 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "minecraft-music-quiz-installer", - "version": "0.4.19", + "version": "0.4.20", "description": "마인크래프트 음악퀴즈 간편설치기 + 관리 사이트", "main": "dist/installer/main.js", "scripts": { diff --git a/src/installer/main.ts b/src/installer/main.ts index 7ad4023..922bf5b 100644 --- a/src/installer/main.ts +++ b/src/installer/main.ts @@ -285,11 +285,12 @@ ipcMain.handle('finalResourcepack:install', async (): Promise<{ ok: boolean; pat if (!pack) return { ok: false, message: t('errors.packNotFound2') } const finalName = pack.pack.finalResourcepackPath if (!finalName || finalName === '.') return { ok: false, message: 'no final resourcepack' } + let dest = '' try { const cleaned = path.basename(finalName.replace(/^\/+/, '')) const url = `${state.baseUrl}/file/resourcepacks/outputs/${encodeURIComponent(cleaned)}` const destDir = path.join(getAppDataDir(), getMcCustomDirName(), 'resourcepacks') - const dest = path.join(destDir, cleaned) + dest = path.join(destDir, cleaned) await fsp.mkdir(destDir, { recursive: true }) sendLog(t('log.finalResourcepackDownload', { url })) // 진행률(퍼센트)을 렌더러로 흘려보내며 스트리밍 다운로드. @@ -307,6 +308,8 @@ ipcMain.handle('finalResourcepack:install', async (): Promise<{ ok: boolean; pat sendLog(t('log.finalResourcepackSaved', { path: dest })) return { ok: true, path: dest } } catch (error) { + // 실패 시 부분/0바이트 zip 이 마인크래프트 리소스팩 목록에 깨진 채로 남지 않도록 삭제. + if (dest) await fsp.rm(dest, { force: true }).catch(() => {}) return { ok: false, message: (error as Error).message } } })