如何使用 NSIS 安装字体?

soa*_*gem 3 fonts nsis

我一直在尝试在 NSIS 中构建一个安装程序来安装字体文件。这是我的主要安装程序脚本:

!include FontName.nsh
!include FontReg.nsh
!include WinMessages.nsh

RequestExecutionLevel admin
InstallDir $DESKTOP

Name "Orange Juice"
OutFile fonttest.exe

Section "install"

    StrCpy $FONT_DIR $FONTS
    !insertmacro InstallTTFFont "orangejuice.ttf"
    DetailPrint "Installing Orange Juice Font..."
    SendMessage ${HWND_BROADCAST} ${WM_FONTCHANGE} 0 0 /TIMEOUT=5000

SectionEnd
Run Code Online (Sandbox Code Playgroud)

我从这里获取了文件 FontReg.nsh并将其逐字复制到我的Program Files\NSIS\Include文件夹中。我从这里获取了文件 FontName.nsh(以及相应的 DLL 文件)并逐字复制了这些文件。然而......当我运行这个脚本时,字体没有安装。我缺少什么?

Sek*_*eki 5

  • 当你定义一个与你想象的不同的同名常量时,定义了FontReg.nsh适当的变量来获取字体安装目录,也可以直接使用指向系统字体目录的变量$FONTS
  • WM_FONTCHANGE您需要通过消息广播向系统发出添加新字体的信号

尝试以下操作:删除您的!define FONT_DIR行并更改您的部分

StrCpy $FONT_DIR $FONTS
!insertmacro InstallTTFFont "orangejuice.ttf"
SendMessage ${HWND_BROADCAST} ${WM_FONTCHANGE} 0 0 /TIMEOUT=5000
Run Code Online (Sandbox Code Playgroud)