Files
ngzz-mc/scripts/make_installer.ps1

51 lines
2.4 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 "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=="