fix(installer-rp): URL-encode base pack path, output to .mc_custom + installer: no auto -Xms

리소스팩 간편설치기:
- 베이스 리소스팩 다운로드 URL 에 encodeURIComponent 적용. "Puzzle Resource
  Pack (basic).zip" 같이 공백·괄호가 들어간 파일명 정상 처리.
- 출력 경로를 %appdata%/.minecraft/resourcepacks/ → %appdata%/.mc_custom/
  resourcepacks/ 로 변경 (renderer 안내문, openFolder, 빌드 출력 일괄).
- 로드 직후 각 음악퀴즈의 베이스 등록 여부를 로그에 노출 (디버그용).
- 베이스 다운로드 시 실제 URL 도 로그에 출력.

음악퀴즈 간편설치기:
- mergeRamArgs: -Xms 가 기존에 없으면 추가하지 않도록 수정. clientMinRam
  은 "유저 PC 사양 최소 요구치" 의미이지 JVM 초기 힙이 아님. -Xmx 는
  계속 추천 RAM 으로 강제 갱신.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-13 00:48:46 +09:00
parent 82307d9d16
commit 5a018bcb8d
4 changed files with 22 additions and 18 deletions

View File

@@ -580,22 +580,20 @@ function getAppDataDir(): string {
}
/**
* 기존 javaArgs 에서 -Xmx/-Xms 토큰만 새 값으로 교체하고 나머지 args 는 보존한다.
* 기존에 없으면 새 RAM 인자를 앞에 붙인다.
* 기존 javaArgs 에서 RAM 토큰만 새 값으로 교체하고 나머지 args 는 보존한다.
* - -Xmx: 항상 추천 RAM 으로 설정 (없으면 추가).
* - -Xms: 기존에 있을 때만 교체. 없으면 추가하지 않음.
* (clientMinRam 은 "유저 PC 사양 최소 요구치" 의미이지 JVM 초기 힙이 아님)
*/
function mergeRamArgs(existing: string, maxMb: number, minMb: number): string {
const newXmx = `-Xmx${maxMb}M`
const newXms = `-Xms${minMb}M`
function mergeRamArgs(existing: string, recommendedMb: number): string {
const newXmx = `-Xmx${recommendedMb}M`
const tokens = (existing || '').split(/\s+/).filter(Boolean)
let foundXmx = false
let foundXms = false
const merged = tokens.map((t) => {
if (t.startsWith('-Xmx')) { foundXmx = true; return newXmx }
if (t.startsWith('-Xms')) { foundXms = true; return newXms }
return t
})
if (!foundXmx) merged.unshift(newXmx)
if (!foundXms) merged.splice(foundXmx ? 0 : 1, 0, newXms)
return merged.join(' ').trim()
}
@@ -611,9 +609,9 @@ async function updateLauncherProfile(pack: PackDefinition, gameDir: string): Pro
const profileKey = pack.name
const existingProfile = json.profiles[profileKey] ?? {}
const existingJavaArgs = typeof existingProfile.javaArgs === 'string' ? (existingProfile.javaArgs as string) : ''
const javaArgs = mergeRamArgs(existingJavaArgs, pack.serverMaxRam, pack.serverMinRam)
const javaArgs = mergeRamArgs(existingJavaArgs, pack.serverMaxRam)
if (existingJavaArgs && existingJavaArgs !== javaArgs) {
sendLog(`기존 JVM 인수 유지, RAM 만 갱신: "${existingJavaArgs}" → "${javaArgs}"`)
sendLog(`기존 JVM 인수 유지, -Xmx 만 갱신: "${existingJavaArgs}" → "${javaArgs}"`)
}
const lastVersionId = pack.platform.type === 'vanilla'
? pack.mcVersion