Files
ngzz-mc/scripts/installer.nsi
2026-08-16 23:46:36 +08:00

136 lines
5.6 KiB
NSIS
Raw Permalink 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.
Unicode true
; 年糕历险记 —— Windows 安装脚本NSIS 3简体中文
; 用法makensis /DVERSION=1.0.0 scripts/installer.nsi
; 产物:年糕历险记-Setup-v1.0.0.exe构建与发布.md §8
; 特性:简体中文向导、可选安装目录、
; 快捷方式选项(组件页:桌面 / 开始菜单,默认勾选)、
; 安装完成后可选立即运行(完成页,默认勾选)、开始菜单卸载、卸载保留存档。
!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
; 安装器 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
; 安装器/卸载器图标:游戏 logomake_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
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "SimpChinese"
; ---- 安装内容(构建与发布.md §8----
Section "主程序" SEC01
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"
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}"
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
; ---- 组件说明(组件页底部;必须放在所有 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