installer: address vanilla mods preservation, robust map rename, new app icon

Reviewer follow-ups:

1) Preserve mods/ for vanilla packs. `downloadModsFolder` now checks
   `!pack.modsFolder` BEFORE wiping — vanilla packs (no modsFolder) no
   longer clobber a user's hand-curated mods directory. Wipe still runs
   for modded packs to keep different MC versions from colliding.

2) Always rename the extracted map to `saves/<퀴즈이름>/`, regardless of
   the zip's top-level layout. The zip is now extracted into a temp
   directory under saves/, and:
   - if the temp has a single subdirectory, that subdirectory's content
     becomes the world;
   - otherwise the temp dir itself (e.g. level.dat + region/ at root) is
     the world.
   In either case, it is renamed atomically to `saves/<sanitized name>`
   (or `<name>_2` etc. if a user world collides). Marker tracks the
   final folder name for participant cleanup.

User request: replace both .exe icons.

- Added build/icon.ico (multi-size 16/32/48/64/128/256) and build/icon.png
  generated from the new music-note artwork.
- electron-builder.yml: set win.icon, nsis installer/uninstaller icons,
  buildResources=build, include build/icon.* in files for runtime use.
- New electron-builder-rp.yml + dist:win:rp script so the resourcepack
  installer also packages with the same icon.
- BrowserWindow({ icon }) wired in both installer and installer-rp main
  processes so the running window's titlebar/taskbar icon matches.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-18 00:14:44 +09:00
parent 4ee0a59f2b
commit c527efc42f
8 changed files with 85 additions and 42 deletions

31
electron-builder-rp.yml Normal file
View File

@@ -0,0 +1,31 @@
appId: kr.tkrmagid.musicquiz.installer-rp
productName: MusicQuizResourcepackInstaller
directories:
output: release
buildResources: build
files:
- dist/installer-rp/**
- dist/shared/**
- installer-rp/**
- build/icon.*
- package.json
# 메인 설치기와 동일하게 .env, locales 를 함께 배포.
extraResources:
- from: .
to: .
filter:
- .env
- from: locales
to: locales
filter:
- "**/*"
win:
target: nsis
artifactName: ${productName}-${version}-Setup.${ext}
icon: build/icon.ico
nsis:
oneClick: false
allowToChangeInstallationDirectory: true
perMachine: false
installerIcon: build/icon.ico
uninstallerIcon: build/icon.ico