|
|
|
@@ -285,11 +285,12 @@ ipcMain.handle('finalResourcepack:install', async (): Promise<{ ok: boolean; pat
|
|
|
|
if (!pack) return { ok: false, message: t('errors.packNotFound2') }
|
|
|
|
if (!pack) return { ok: false, message: t('errors.packNotFound2') }
|
|
|
|
const finalName = pack.pack.finalResourcepackPath
|
|
|
|
const finalName = pack.pack.finalResourcepackPath
|
|
|
|
if (!finalName || finalName === '.') return { ok: false, message: 'no final resourcepack' }
|
|
|
|
if (!finalName || finalName === '.') return { ok: false, message: 'no final resourcepack' }
|
|
|
|
|
|
|
|
let dest = ''
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
const cleaned = path.basename(finalName.replace(/^\/+/, ''))
|
|
|
|
const cleaned = path.basename(finalName.replace(/^\/+/, ''))
|
|
|
|
const url = `${state.baseUrl}/file/resourcepacks/outputs/${encodeURIComponent(cleaned)}`
|
|
|
|
const url = `${state.baseUrl}/file/resourcepacks/outputs/${encodeURIComponent(cleaned)}`
|
|
|
|
const destDir = path.join(getAppDataDir(), getMcCustomDirName(), 'resourcepacks')
|
|
|
|
const destDir = path.join(getAppDataDir(), getMcCustomDirName(), 'resourcepacks')
|
|
|
|
const dest = path.join(destDir, cleaned)
|
|
|
|
dest = path.join(destDir, cleaned)
|
|
|
|
await fsp.mkdir(destDir, { recursive: true })
|
|
|
|
await fsp.mkdir(destDir, { recursive: true })
|
|
|
|
sendLog(t('log.finalResourcepackDownload', { url }))
|
|
|
|
sendLog(t('log.finalResourcepackDownload', { url }))
|
|
|
|
// 진행률(퍼센트)을 렌더러로 흘려보내며 스트리밍 다운로드.
|
|
|
|
// 진행률(퍼센트)을 렌더러로 흘려보내며 스트리밍 다운로드.
|
|
|
|
@@ -307,6 +308,8 @@ ipcMain.handle('finalResourcepack:install', async (): Promise<{ ok: boolean; pat
|
|
|
|
sendLog(t('log.finalResourcepackSaved', { path: dest }))
|
|
|
|
sendLog(t('log.finalResourcepackSaved', { path: dest }))
|
|
|
|
return { ok: true, path: dest }
|
|
|
|
return { ok: true, path: dest }
|
|
|
|
} catch (error) {
|
|
|
|
} catch (error) {
|
|
|
|
|
|
|
|
// 실패 시 부분/0바이트 zip 이 마인크래프트 리소스팩 목록에 깨진 채로 남지 않도록 삭제.
|
|
|
|
|
|
|
|
if (dest) await fsp.rm(dest, { force: true }).catch(() => {})
|
|
|
|
return { ok: false, message: (error as Error).message }
|
|
|
|
return { ok: false, message: (error as Error).message }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|