You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否不安装字体修改NSIS安装程序字体?FontInfo插件用法咨询

在NSIS中不安装系统字体即可自定义安装界面字体的实现方案

核心需求回顾

  • 打包自定义.ttf字体到安装程序
  • 不将字体安装到Windows系统字体目录,仅在安装界面临时使用
  • 替代原生CreateFont(只能调用已安装的系统字体),用FontInfo插件实现

步骤1:打包字体到安装程序

把你的.ttf字体文件打包到安装程序的临时插件目录(安装后自动清理,无需额外卸载处理):

; 替换成你本地字体文件的路径,释放到NSIS临时插件目录
File "/oname=$PLUGINSDIR/mycustomfont.ttf" "D:/fonts/mycustomfont.ttf"

步骤2:用FontInfo插件加载字体

先把FontInfo插件放到NSIS的Plugins目录(或脚本指定的插件路径),然后加载字体获取句柄:

; 加载字体,第二个参数为字体权重(0=常规,500=半粗,700=粗体)
FontInfo::LoadFont "$PLUGINSDIR/mycustomfont.ttf" 500
Pop $0 ; $0存储加载后的字体句柄,后续用来设置界面

步骤3:将字体应用到安装界面控件

通过SendMessage把字体设置给界面控件,以Modern UI为例,在界面初始化后执行:

; 获取安装主窗口句柄
GetDlgItem $1 $HWNDPARENT 0
; 给主窗口及所有子控件设置字体(1表示让控件销毁时释放字体)
SendMessage $1 ${WM_SETFONT} $0 1

; 也可以单独设置特定控件,比如标题文本(控件ID需根据你的界面调整)
GetDlgItem $2 $HWNDPARENT 0x0409
SendMessage $2 ${WM_SETFONT} $0 1

提示:如果用的是自定义界面,需要确认对应控件的ID,可通过NSIS的控件查看工具获取。

步骤4:清理字体资源

安装完成后释放字体句柄,避免内存泄漏:

FontInfo::FreeFont $0

关键说明

原生CreateFont只能调用系统已安装的字体,无法直接读取打包的.ttf文件,FontInfo插件的核心作用就是加载未安装的字体文件并返回可用的字体句柄,刚好满足你不想改动系统字体的需求。

内容的提问来源于stack exchange,提问作者tux Neoh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 09:20:01