Files
ngzz-mc/scripts/make_installer.ps1

53 lines
2.5 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 年糕历险记 —— 便携安装包构建脚本(中文安装,构建与发布.md §8 交付方案)
# 用法:pwsh -File scripts/make_installer.ps1 [-Version 0.1.0]
# 产物:dist/年糕历险记-Setup-v<版本>.zip(解压后运行 安装.bat,全中文交互)
param([string]$Version = "0.1.0")
$ErrorActionPreference = "Stop"
$root = Split-Path $PSScriptRoot -Parent
$dist = Join-Path $root "dist"
$stage = Join-Path $dist "年糕历险记-Setup-v$Version"
# 1) 构建(复用 build.ps1 逻辑:定位 zig/gcc)
& (Join-Path $PSScriptRoot "build.ps1")
if ($LASTEXITCODE -ne 0) { throw "构建失败" }
# 2) 组装安装目录
if (Test-Path $stage) { Remove-Item $stage -Recurse -Force }
New-Item -ItemType Directory -Force -Path $stage | Out-Null
Copy-Item (Join-Path $root "bin\mc-client.exe") $stage
Copy-Item (Join-Path $root "bin\mc-server.exe") $stage
New-Item -ItemType Directory -Force -Path (Join-Path $stage "config") | Out-Null
Copy-Item (Join-Path $root "config\client.yaml") (Join-Path $stage "config")
Copy-Item (Join-Path $root "config\server.yaml") (Join-Path $stage "config")
New-Item -ItemType Directory -Force -Path (Join-Path $stage "mods") | Out-Null
Copy-Item (Join-Path $root "mods\README.md") (Join-Path $stage "mods")
# 游戏数据(方块/物品/配方注册表)
Copy-Item (Join-Path $root "assets") (Join-Path $stage "assets") -Recurse
# 默认素材包
Copy-Item (Join-Path $root "resourcepacks") (Join-Path $stage "resourcepacks") -Recurse
# 安装脚本(GBK 编码保证 cmd 中文显示)
Copy-Item (Join-Path $PSScriptRoot "installer\安装.bat") (Join-Path $stage "安装.bat")
# 游戏说明(中文)
[System.IO.File]::WriteAllText((Join-Path $stage "README.txt"), @"
年糕历险记 v$Version
====================
安装:双击 安装.bat(选择安装目录,自动创建桌面快捷方式)。
卸载:删除安装目录即可(存档保存在安装目录 worlds/ 下)。
素材包/光影包:解压到 mods/ 目录(原生 Minecraft 资源包格式直接支持)。
未安装光影包时使用系统默认光影。
$(Get-Date -Format "yyyy-MM-dd")
"@, (New-Object System.Text.UTF8Encoding($false)))
# 3) 打包 zip(中文文件名)
$zipPath = Join-Path $dist "年糕历险记-Setup-v$Version.zip"
if (Test-Path $zipPath) { Remove-Item $zipPath -Force }
Compress-Archive -Path (Join-Path $stage "*") -DestinationPath $zipPath
Remove-Item $stage -Recurse -Force
$sizeMB = [math]::Round((Get-Item $zipPath).Length / 1MB, 1)
Write-Host "== 安装包就绪:$zipPath($sizeMB MB)=="