From db81873409487fcd5e694527c0044529fe94793f Mon Sep 17 00:00:00 2001 From: NianGao Dev Date: Sun, 16 Aug 2026 23:46:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=89=93=E5=8C=85=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 36 +++++++++++++++++++++++++++++++ cmd/client/icon.ico | Bin 0 -> 92239 bytes scripts/installer.nsi | 44 ++++++++++++++++++++++++++++++++------ scripts/make_icon.ps1 | 48 +++++++++++++++++++++++++++++++++++++----- scripts/make_nsis.ps1 | 48 ++++++++++++++++++++++++++++++++++++++++++ 文档/构建与发布.md | 10 ++++++--- 文档/索引.md | 2 ++ 7 files changed, 174 insertions(+), 14 deletions(-) create mode 100644 cmd/client/icon.ico create mode 100644 scripts/make_nsis.ps1 diff --git a/README.md b/README.md index 0558c39b..cc0e2811 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,42 @@ M3.5/M4/M6 进行中(见 [路线图.md](文档/路线图.md))。 遵循 [设计.md](文档/设计.md) 第 1 节:`cmd/`、`internal/`、`assets/`、`mods/`、`resourcepacks/`、`worlds/`、`config/`、`logs/` 等。 +## 打包发布(NSIS 中文安装器) + +正式发布用 **NSIS 3** 生成简体中文安装器,产品名统一为「年糕历险记」(见 [构建与发布.md](文档/构建与发布.md) §8)。 + +**一键打包**(构建 + 生成安装器,需 `tools/` 下 zig 或 MinGW 提供 C 工具链;NSIS 3 自动查找 `tools/nsis/` 或 PATH): + +```powershell +pwsh -File scripts/make_nsis.ps1 -Version 1.0.0 +``` + +产物:`dist/年糕历险记-Setup-v1.0.0.exe` + +**手动步骤**(不依赖一键脚本): + +1. 构建发布版可执行文件: + + ```powershell + pwsh -File scripts/build.ps1 -Release + ``` + +2. 用 NSIS 3 编译安装脚本(`scripts/installer.nsi`,NSIS 可放 `tools/nsis/` 或加入 PATH): + + ```powershell + makensis /DVERSION=1.0.0 scripts/installer.nsi + ``` + +**安装器特性**(全中文向导界面): + +- 安装器 exe / 卸载器使用**游戏 logo 图标**(与游戏本体一致,素材包 `pack.png` 经 `scripts/make_icon.ps1` 生成 `cmd/client/icon.ico`,规范见 [构建与发布.md](文档/构建与发布.md) §8「安装器图标」); +- 组件页可选**快捷方式**:「创建桌面快捷方式」「创建开始菜单快捷方式」(默认勾选,可取消); +- 完成页可选**安装完成后立即运行**(默认勾选,可取消); +- 开始菜单含「年糕历险记」与「卸载年糕历险记」入口; +- 卸载时**保留** `worlds/` 存档与 `logs/` 日志目录。 + +**备选:便携 zip 安装包**(无 NSIS 环境时):`pwsh -File scripts/make_installer.ps1 -Version 1.0.0`,解压后运行 `安装.bat`(同样支持可选桌面快捷方式、可选立即运行)。 + ## 素材包 / 光影包怎么放(内容包统一格式) 素材包、光影包与功能 Mod 共用同一套内容包格式(manifest + `type`,见 [设计.md](文档/设计.md) §1.3),**统一投放到 [`mods/`](mods/README.md)**: diff --git a/cmd/client/icon.ico b/cmd/client/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..744d4537afd056bd84c5c518a5738f2fbdf05ddc GIT binary patch literal 92239 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 ?~tCaDp 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 Ws@_9cN!kv89^G4pns2eV=>GwACnQ+_ literal 0 HcmV?d00001 diff --git a/scripts/installer.nsi b/scripts/installer.nsi index 0f152d56..ef8be24a 100644 --- a/scripts/installer.nsi +++ b/scripts/installer.nsi @@ -2,6 +2,9 @@ ; 年糕历险记 —— Windows 安装脚本(NSIS 3,简体中文) ; 用法:makensis /DVERSION=1.0.0 scripts/installer.nsi ; 产物:年糕历险记-Setup-v1.0.0.exe(构建与发布.md §8) +; 特性:简体中文向导、可选安装目录、 +; 快捷方式选项(组件页:桌面 / 开始菜单,默认勾选)、 +; 安装完成后可选立即运行(完成页,默认勾选)、开始菜单卸载、卸载保留存档。 !include "MUI2.nsh" @@ -24,12 +27,27 @@ InstallDirRegKey HKCU "${UNINSTALL_KEY}" "InstallLocation" RequestExecutionLevel user SetCompressor /SOLID lzma -!define MUI_ABORTWARNING -!define MUI_FINISHPAGE_RUN "$INSTDIR\${PRODUCT_EXE}" -!define MUI_FINISHPAGE_RUN_TEXT "运行${PRODUCT_NAME}" +; 安装器 exe 自身的版本信息 +VIProductVersion "${VERSION}.0" +VIAddVersionKey "ProductName" "${PRODUCT_NAME}" +VIAddVersionKey "FileDescription" "${PRODUCT_NAME} 安装程序" +VIAddVersionKey "FileVersion" "${VERSION}" +VIAddVersionKey "ProductVersion" "${VERSION}" +VIAddVersionKey "CompanyName" "${PRODUCT_PUBLISHER}" +VIAddVersionKey "LegalCopyright" "Copyright (C) ${PRODUCT_PUBLISHER}" -; ---- 页面(全中文)---- +!define MUI_ABORTWARNING +; 安装器/卸载器图标:游戏 logo(make_icon.ps1 从素材包 pack.png 生成多尺寸 icon.ico, +; 构建与发布.md §8「安装器图标」规范:安装包必须与游戏本体同图标) +!define MUI_ICON "..\cmd\client\icon.ico" +!define MUI_UNICON "..\cmd\client\icon.ico" +; 完成页「安装完成后运行」复选框(默认勾选) +!define MUI_FINISHPAGE_RUN "$INSTDIR\${PRODUCT_EXE}" +!define MUI_FINISHPAGE_RUN_TEXT "安装完成后运行${PRODUCT_NAME}" + +; ---- 页面(全中文):欢迎 → 组件(快捷方式选项)→ 目录 → 安装 → 完成 ---- !insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH @@ -41,6 +59,7 @@ SetCompressor /SOLID lzma ; ---- 安装内容(构建与发布.md §8)---- Section "主程序" SEC01 + SectionIn RO SetOutPath "$INSTDIR" File "..\bin\mc-client.exe" File "..\bin\mc-server.exe" @@ -80,15 +99,21 @@ Section "主程序" SEC01 WriteRegDWORD HKCU "${UNINSTALL_KEY}" "NoRepair" 1 WriteUninstaller "$INSTDIR\uninstall.exe" +SectionEnd - ; 快捷方式(桌面 + 开始菜单,中文名) +; 快捷方式选项 1:桌面(默认勾选) +Section "创建桌面快捷方式" SEC02 CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_EXE}" +SectionEnd + +; 快捷方式选项 2:开始菜单(默认勾选) +Section "创建开始菜单快捷方式" SEC03 CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}" CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_EXE}" CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\卸载${PRODUCT_NAME}.lnk" "$INSTDIR\uninstall.exe" SectionEnd -; ---- 卸载 ---- +; ---- 卸载(保留用户存档 worlds/ 与日志)---- Section "Uninstall" Delete "$DESKTOP\${PRODUCT_NAME}.lnk" RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}" @@ -101,3 +126,10 @@ Section "Uninstall" ; 保留用户存档(worlds/)与日志,不删除 DeleteRegKey HKCU "${UNINSTALL_KEY}" SectionEnd + +; ---- 组件说明(组件页底部;必须放在所有 Section 声明之后)---- +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "安装游戏主程序(客户端、服务器、素材包与配置文件)。必选。" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "在桌面创建「${PRODUCT_NAME}」快捷方式。" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "在开始菜单创建「${PRODUCT_NAME}」与「卸载${PRODUCT_NAME}」快捷方式。" +!insertmacro MUI_FUNCTION_DESCRIPTION_END diff --git a/scripts/make_icon.ps1 b/scripts/make_icon.ps1 index 94065850..f5949e4b 100644 --- a/scripts/make_icon.ps1 +++ b/scripts/make_icon.ps1 @@ -1,7 +1,7 @@ -# 年糕历险记 —— 程序图标生成(构建与发布.md §8:exe/窗口使用原版素材 logo) +# 年糕历险记 —— 程序图标生成(构建与发布.md §8:exe/窗口/快捷方式/安装器使用原版素材 logo) # 用法:pwsh -File scripts/make_icon.ps1 -# 流程:素材包 pack.png → cmd/client/icon.png → go-winres 生成 cmd/client/icon.syso -# (资源目录树格式,Go 链接器自动嵌入 exe;资源管理器/任务栏/快捷方式显示图标)。 +# 流程:素材包 pack.png → cmd/client/icon.png → go-winres 生成 icon.syso(嵌入游戏 exe) +# → 同时生成多尺寸 cmd/client/icon.ico(供 NSIS 安装器 MUI_ICON / MUI_UNICON 使用) $ErrorActionPreference = "Stop" $root = Split-Path $PSScriptRoot -Parent @@ -20,9 +20,47 @@ $env:GOCACHE = Join-Path $root ".gocache" Push-Location (Join-Path $root "cmd\client") try { go run github.com/tc-hib/go-winres@latest make --in winres.json --out icon --arch amd64 --no-suffix - if ($LASTEXITCODE -ne 0) { throw "go-winres 生成失败" } + if ($LASTEXITCODE -ne 0) { throw "go-winres 生成失败" } Move-Item -Force (Join-Path (Get-Location) "icon") (Join-Path (Get-Location) "icon.syso") } finally { Pop-Location } -Write-Host "== 图标资源已嵌入:cmd/client/icon.syso ==" \ No newline at end of file +Write-Host "== 图标资源已嵌入:cmd/client/icon.syso ==" + +# 3) 生成多尺寸 icon.ico(16/24/32/48/64/128/256,PNG 压缩,供 NSIS 安装器/卸载器使用) +Add-Type -AssemblyName System.Drawing +$src = [System.Drawing.Image]::FromFile((Join-Path $root "cmd\client\icon.png")) +$sizes = @(16, 24, 32, 48, 64, 128, 256) +$ms = New-Object System.IO.MemoryStream +$bw = New-Object System.IO.BinaryWriter($ms) +# ICONDIR:reserved(2)=0, type(2)=1, count(2) +$bw.Write([uint16]0); $bw.Write([uint16]1); $bw.Write([uint16]$sizes.Count) +$offset = 6 + 16 * $sizes.Count +$images = @() +foreach ($s in $sizes) { + $bmp = New-Object System.Drawing.Bitmap($s, $s) + $g = [System.Drawing.Graphics]::FromImage($bmp) + $g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic + $g.DrawImage($src, 0, 0, $s, $s) + $g.Dispose() + $pngMs = New-Object System.IO.MemoryStream + $bmp.Save($pngMs, [System.Drawing.Imaging.ImageFormat]::Png) + $images += ,$pngMs.ToArray() + $bmp.Dispose(); $pngMs.Dispose() +} +for ($i = 0; $i -lt $sizes.Count; $i++) { + $s = $sizes[$i] + $dim = if ($s -ge 256) { 0 } else { $s } # 256 用 0 表示 + $bw.Write([byte]$dim); $bw.Write([byte]$dim) + $bw.Write([byte]0); $bw.Write([byte]0) # colors / reserved + $bw.Write([uint16]1); $bw.Write([uint16]32) # planes / bpp + $bw.Write([uint32]$images[$i].Length) + $bw.Write([uint32]$offset) + $offset += $images[$i].Length +} +foreach ($d in $images) { $bw.Write($d) } +$bw.Flush() +[System.IO.File]::WriteAllBytes((Join-Path $root "cmd\client\icon.ico"), $ms.ToArray()) +$src.Dispose() +$bw.Close(); $ms.Dispose() +Write-Host "== 安装器图标已生成:cmd/client/icon.ico($($sizes -join '/') px)==" diff --git a/scripts/make_nsis.ps1 b/scripts/make_nsis.ps1 new file mode 100644 index 00000000..7aa4c411 --- /dev/null +++ b/scripts/make_nsis.ps1 @@ -0,0 +1,48 @@ +# 年糕历险记 —— NSIS 正式安装器构建脚本(构建与发布.md §8 交付方案) +# 用法:pwsh -File scripts/make_nsis.ps1 [-Version 0.1.0] +# 前置:C 工具链(tools/ 下 zig 或 MinGW,构建 GL 客户端需要); +# NSIS 3(自动查找 tools/nsis/nsis-*/makensis.exe,其次 PATH 中的 makensis) +# 产物:dist/年糕历险记-Setup-v<版本>.exe(简体中文向导、快捷方式选项、完成页运行选项) +param([string]$Version = "0.1.0") + +$ErrorActionPreference = "Stop" +$root = Split-Path $PSScriptRoot -Parent + +# 1) 构建 bin/(复用 build.ps1:定位 zig/gcc,产出 mc-client.exe / mc-server.exe 及资源) +& (Join-Path $PSScriptRoot "build.ps1") +if ($LASTEXITCODE -ne 0) { throw "构建失败(build.ps1)" } + +# 2) 定位 makensis:优先 tools/nsis/(本项目自带 NSIS 3.10),其次系统 PATH +$makensisPath = (Get-ChildItem (Join-Path $root "tools\nsis") -Recurse -Filter makensis.exe -ErrorAction SilentlyContinue | Select-Object -First 1).FullName +if (-not $makensisPath) { + $cmd = Get-Command makensis -ErrorAction SilentlyContinue + if ($cmd) { $makensisPath = $cmd.Source } +} +if (-not $makensisPath) { + throw "未找到 NSIS:请把 NSIS 3 放到 tools/nsis/(如 nsis-3.10)或加入 PATH。下载:https://nsis.sourceforge.io/Download" +} + +# 3) 确保安装器图标存在(游戏 logo:make_icon.ps1 生成 icon.syso 与 icon.ico; +# 缺失时调用;规范见 构建与发布.md §8「安装器图标」) +if (-not (Test-Path (Join-Path $root "cmd\client\icon.ico"))) { + & (Join-Path $PSScriptRoot "make_icon.ps1") + if ($LASTEXITCODE -ne 0) { throw "图标生成失败(make_icon.ps1)" } +} + +# 3) 编译安装器(中文界面、快捷方式选项、安装完成后运行选项) +# installer.nsi 需为 UTF-8 带 BOM(NSIS 3 按 BOM 识别编码;文本编辑器保存可能去掉 BOM,这里自动补回) +$nsi = Join-Path $PSScriptRoot "installer.nsi" +$nsiBytes = [System.IO.File]::ReadAllBytes($nsi) +if (-not ($nsiBytes.Length -ge 3 -and $nsiBytes[0] -eq 0xEF -and $nsiBytes[1] -eq 0xBB -and $nsiBytes[2] -eq 0xBF)) { + [System.IO.File]::WriteAllText($nsi, [System.IO.File]::ReadAllText($nsi), (New-Object System.Text.UTF8Encoding($true))) + Write-Host "== installer.nsi 已补 UTF-8 BOM ==" +} + +New-Item -ItemType Directory -Force -Path (Join-Path $root "dist") | Out-Null +& $makensisPath "/DVERSION=$Version" $nsi +if ($LASTEXITCODE -ne 0) { throw "makensis 编译失败" } + +$exe = Join-Path $root "dist\年糕历险记-Setup-v$Version.exe" +if (-not (Test-Path $exe)) { throw "未找到安装器产物:$exe" } +$sizeMB = [math]::Round((Get-Item $exe).Length / 1MB, 1) +Write-Host "== NSIS 安装器就绪:$exe($sizeMB MB)==" diff --git a/文档/构建与发布.md b/文档/构建与发布.md index dc9b23d5..0dd71607 100644 --- a/文档/构建与发布.md +++ b/文档/构建与发布.md @@ -77,10 +77,12 @@ mc-v1.2.0/ - 产品名称:**年糕历险记**(安装包文件名 `年糕历险记-Setup-v<版本>`;产品、快捷方式、卸载项同名)。 - **两条交付路径**: - 1. **便携安装包(当前交付)**:`pwsh scripts/make_installer.ps1` 生成 `dist/年糕历险记-Setup-v<版本>.zip`,解压后运行 `安装.bat`——全中文交互(选择安装目录、复制文件、可选创建桌面快捷方式「年糕历险记」默认选中、安装完成后可选立即运行游戏默认选中)。 - 2. **NSIS 正式安装器(发布时)**:`scripts/installer.nsi`(简体中文界面、开始菜单、卸载器),需发布环境安装 NSIS 3:`makensis /DVERSION=<版本> scripts/installer.nsi`。 + 1. **NSIS 正式安装器(当前交付)**:`pwsh scripts/make_nsis.ps1 -Version <版本>` 一键构建(内部:`build.ps1` 构建 → 定位 `tools/nsis/` 或 PATH 的 NSIS 3 `makensis` → 编译 `scripts/installer.nsi`)→ 产物 `dist/年糕历险记-Setup-v<版本>.exe`。手动方式:`makensis /DVERSION=<版本> scripts/installer.nsi`(NSIS 3,可放 `tools/nsis/`)。注意 `installer.nsi` 需为 **UTF-8 带 BOM**(NSIS 3 按 BOM 识别编码,无 BOM 会报 `Bad text encoding`;`make_nsis.ps1` 编译前会自动补 BOM)。 + 2. **便携安装包(备选,无 NSIS 环境)**:`pwsh scripts/make_installer.ps1` 生成 `dist/年糕历险记-Setup-v<版本>.zip`,解压后运行 `安装.bat`——全中文交互(选择安装目录、复制文件、可选创建桌面快捷方式「年糕历险记」默认选中、安装完成后可选立即运行游戏默认选中)。 +- **安装器选项(全中文向导)**:组件页可选**快捷方式**——「创建桌面快捷方式」「创建开始菜单快捷方式」默认勾选可取消;完成页可选**安装完成后立即运行**默认勾选可取消;开始菜单含「年糕历险记」与「卸载年糕历险记」入口;卸载时保留 `worlds/` 存档与 `logs/` 日志。 - 安装内容:`mc-client.exe`、`mc-server.exe`、`config/`、`mods/`(README)、`resourcepacks/`(默认素材包)。 -- **程序图标(exe/窗口/快捷方式)**:使用素材包原版 logo(`resourcepacks/*/pack.png`)。`scripts/make_icon.ps1` 生成 `cmd/client/icon.syso`(go-winres 资源目录树格式,Go 链接器自动嵌入 exe 图标与版本信息);窗口图标运行时读取 pack.png 经 `render.SetWindowIcon` 设置。`build.ps1` 在 syso 缺失时自动调用 make_icon.ps1。 +- **程序图标(exe/窗口/快捷方式)**:使用素材包原版 logo(`resourcepacks/*/pack.png`)。`scripts/make_icon.ps1` 生成 `cmd/client/icon.syso`(go-winres 资源目录树格式,Go 链接器自动嵌入 exe 图标与版本信息)与 `cmd/client/icon.ico`(多尺寸 16–256,供 NSIS 安装器使用);窗口图标运行时读取 pack.png 经 `render.SetWindowIcon` 设置。`build.ps1` 在 syso 缺失时自动调用 make_icon.ps1,`make_nsis.ps1` 在 ico 缺失时也会调用。 +- **安装器图标(规范)**:打包好的安装器 exe 与卸载器**必须**使用游戏 logo,与游戏本体一致——`scripts/installer.nsi` 通过 `MUI_ICON` / `MUI_UNICON` 引用 `..\cmd\client\icon.ico`(由 make_icon.ps1 从素材包 pack.png 生成)。发布检查:`dist/*.exe` 图标与 `resourcepacks/*/pack.png` 一致(任务栏/资源管理器可见)。 - 中文要求:安装脚本全中文;游戏内 `lang/zh_cn.json` 随安装包提供;缺失翻译键回退 en_us。 - 存档位置:安装目录 `worlds/`(便携式;NSIS 版卸载时保留存档)。 @@ -98,3 +100,5 @@ mc-v1.2.0/ | --- | --- | --- | | (初始建立) | 初版:开发/发布构建、embed 切换、交叉编译、版本与发布清单 | — | | (安装包) | 新增 §8:Windows 安装包「年糕历险记」NSIS 中文安装 | — | +| (NSIS 交付落地) | NSIS 正式安装器改为当前交付:新增 `scripts/make_nsis.ps1` 一键打包;`installer.nsi` 增加组件页快捷方式选项(桌面/开始菜单,默认勾选)与完成页运行选项(默认勾选);README 补 NSIS 打包说明 | — | +| (安装器图标) | 规范:安装器 exe / 卸载器必须用游戏 logo——`make_icon.ps1` 生成多尺寸 `cmd/client/icon.ico`,`installer.nsi` 经 `MUI_ICON` / `MUI_UNICON` 引用(§8) | — | diff --git a/文档/索引.md b/文档/索引.md index a6e19ee0..06be26cc 100644 --- a/文档/索引.md +++ b/文档/索引.md @@ -208,3 +208,5 @@ | (客户端渲染修复) | 渲染.md 新增 §4.1 植被染色(原版灰度草/叶图集染色)、§5.2 覆盖层渲染(破坏裂纹/手持方块)、§5.3 实体广告牌;修复相机视图矩阵俯仰符号翻转(视角不跟随鼠标根因);HUD 换原版心/鸡腿/热键栏精灵 | — | | (工作台界面) | 客户端工作台 3×3 合成界面落地(工作台与合成表.md §5):右键命中工作台打开、槽位交换/合并、输出格合成、关闭退回材料;UI还原.md §7 补物品图标双图集规则(block/* 取 blocks 图集) | — | | (玩法与设置) | 渲染.md §5.3 补交叉广告牌与掉落物渲染;方格垂直面绕序修复、鼠标左右反转、音频接入(音频.md §2 事件驱动)、原版掉落与动物攻击(动物体系.md §5)、村庄村民生成(村民系统.md §2)、种子/灵敏度配置与设置界面(UI与输入.md §6)、准星方块名、截图归入 jietu/ | — | +| (NSIS 交付落地) | NSIS 正式安装器改为当前交付(构建与发布.md §8):`scripts/make_nsis.ps1` 一键打包,`installer.nsi` 组件页快捷方式选项(桌面/开始菜单)+ 完成页运行选项,README 补 NSIS 打包说明 | — | +| (安装器图标) | 构建与发布.md §8 规范:安装器 exe / 卸载器必须用游戏 logo——`make_icon.ps1` 生成多尺寸 `cmd/client/icon.ico`,`installer.nsi` 经 `MUI_ICON` / `MUI_UNICON` 引用 | — |