Files
ngzz-mc/scripts/installer.nsi

136 lines
5.6 KiB
NSIS
Raw Permalink Normal View History

Unicode true
; 年糕历险记 —— Windows 安装脚本(NSIS 3,简体中文)
; 用法:makensis /DVERSION=1.0.0 scripts/installer.nsi
; 产物:年糕历险记-Setup-v1.0.0.exe(构建与发布.md §8)
2026-08-16 23:46:36 +08:00
; 特性:简体中文向导、可选安装目录、
; 快捷方式选项(组件页:桌面 / 开始菜单,默认勾选)、
; 安装完成后可选立即运行(完成页,默认勾选)、开始菜单卸载、卸载保留存档。
!include "MUI2.nsh"
; ---- 产品信息(构建与发布.md §8:名称统一为 年糕历险记)----
!ifndef VERSION
!define VERSION "0.1.0"
!endif
!define PRODUCT_NAME "年糕历险记"
!define PRODUCT_NAME_EN "NianGao Adventure"
!define PRODUCT_PUBLISHER "NianGao Studio"
!define PRODUCT_EXE "mc-client.exe"
!define INSTALLER_NAME "${PRODUCT_NAME}-Setup-v${VERSION}.exe"
!define UNINSTALL_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME_EN}"
Name "${PRODUCT_NAME}"
OutFile "..\dist\${INSTALLER_NAME}"
; 按用户安装(游戏需要往自身目录写日志/存档,Program Files 无写入权限会导致启动崩溃)
InstallDir "$LOCALAPPDATA\Programs\${PRODUCT_NAME_EN}"
InstallDirRegKey HKCU "${UNINSTALL_KEY}" "InstallLocation"
RequestExecutionLevel user
SetCompressor /SOLID lzma
2026-08-16 23:46:36 +08:00
; 安装器 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
2026-08-16 23:46:36 +08:00
; 安装器/卸载器图标:游戏 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}"
2026-08-16 23:46:36 +08:00
!define MUI_FINISHPAGE_RUN_TEXT "安装完成后运行${PRODUCT_NAME}"
2026-08-16 23:46:36 +08:00
; ---- 页面(全中文):欢迎 → 组件(快捷方式选项)→ 目录 → 安装 → 完成 ----
!insertmacro MUI_PAGE_WELCOME
2026-08-16 23:46:36 +08:00
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "SimpChinese"
; ---- 安装内容(构建与发布.md §8)----
Section "主程序" SEC01
2026-08-16 23:46:36 +08:00
SectionIn RO
SetOutPath "$INSTDIR"
File "..\bin\mc-client.exe"
File "..\bin\mc-server.exe"
; 配置与语言
SetOutPath "$INSTDIR\config"
File "..\config\client.yaml"
File "..\config\server.yaml"
; 游戏数据(方块/物品/配方注册表)
SetOutPath "$INSTDIR\assets"
File /r "..\assets\*.*"
; 默认素材包
SetOutPath "$INSTDIR\resourcepacks\texture-pack-default1.20.5-26.2"
File /r "..\resourcepacks\texture-pack-default1.20.5-26.2\*.*"
; 内容包投放目录与说明
SetOutPath "$INSTDIR\mods"
File "..\mods\README.md"
; 初始化:创建存档/日志目录与占位说明(安装与初始化)
CreateDirectory "$INSTDIR\worlds"
CreateDirectory "$INSTDIR\logs"
FileOpen $0 "$INSTDIR\worlds\说明.txt" w
FileWrite $0 "世界存档目录:游戏会自动把世界保存到这里。"
FileClose $0
; 注册卸载信息(按用户安装 → HKCU)
WriteRegStr HKCU "${UNINSTALL_KEY}" "DisplayName" "${PRODUCT_NAME}"
WriteRegStr HKCU "${UNINSTALL_KEY}" "DisplayVersion" "${VERSION}"
WriteRegStr HKCU "${UNINSTALL_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
WriteRegStr HKCU "${UNINSTALL_KEY}" "DisplayIcon" "$INSTDIR\${PRODUCT_EXE}"
WriteRegStr HKCU "${UNINSTALL_KEY}" "InstallLocation" "$INSTDIR"
WriteRegStr HKCU "${UNINSTALL_KEY}" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegDWORD HKCU "${UNINSTALL_KEY}" "NoModify" 1
WriteRegDWORD HKCU "${UNINSTALL_KEY}" "NoRepair" 1
WriteUninstaller "$INSTDIR\uninstall.exe"
2026-08-16 23:46:36 +08:00
SectionEnd
2026-08-16 23:46:36 +08:00
; 快捷方式选项 1:桌面(默认勾选)
Section "创建桌面快捷方式" SEC02
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_EXE}"
2026-08-16 23:46:36 +08:00
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
2026-08-16 23:46:36 +08:00
; ---- 卸载(保留用户存档 worlds/ 与日志)----
Section "Uninstall"
Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}"
Delete "$INSTDIR\${PRODUCT_EXE}"
Delete "$INSTDIR\mc-server.exe"
Delete "$INSTDIR\uninstall.exe"
RMDir /r "$INSTDIR\config"
RMDir /r "$INSTDIR\resourcepacks"
RMDir /r "$INSTDIR\mods"
; 保留用户存档(worlds/)与日志,不删除
DeleteRegKey HKCU "${UNINSTALL_KEY}"
SectionEnd
2026-08-16 23:46:36 +08:00
; ---- 组件说明(组件页底部;必须放在所有 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