zl程序教程

您现在的位置是:首页 >  其他

当前栏目

NSIS 字体安装

安装 字体
2023-09-27 14:27:29 时间

 安装新字体

网上流传的方法是

复制内容到剪贴板

代码:

!include WinMessages.nsh
Section "FONTS" SEC01
File /oname=$FONTS\tahoma.ttf tahoma.ttf ;tahoma.ttf 为字体安装文件
Push "$FONTS\tahoma.ttf"
System::Call "Gdi32::AddFontResource(t s) i .s"
Pop $0
IntCmp $0 0 0 +2 +2
MessageBox MB_OK "注册字体失败"
SendMessage ${HWND_BROADcast} ${WM_FONTCHANGE} 0 0
SectionEnd
 
或者如下:
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" "Lucida Grande (TrueType)" "Lucida Grande.ttf"
System::Call "GDI32::AddFontResource(t) i ('Lucida Grande.ttf') .s"
方法三:
 ;安装字体……
  SetOutPath "$INSTDIR"
  File  "Fonts\FZZY_GBK.TTF"
  Call InstallFont
SectionEnd

;----------------------------------------------------------------------------------

Section Uninstall
  ;删除字体
   Push "$FONTS\FZY3FW.TTF"
   System::Call "Gdi32::RemoveFontResource(t s) i .s"
   Pop $0
   IntCmp $0 0 0 +2 +2
   DetailPrint "删除繁体字体失败"
   SendMessage ${HWND_BROADcast} ${WM_FONTCHANGE} 0 0
   Push "$FONTS\FZZY_GBK.TTF"
   System::Call "Gdi32::RemoveFontResource(t s) i .s"
   Pop $0
   IntCmp $0 0 0 +2 +2
   DetailPrint "删除简体字体失败"
   SendMessage ${HWND_BROADcast} ${WM_FONTCHANGE} 0 0
  Delete "$FONTS\FZZY_GBK.TTF"
  Delete "$FONTS\FZY3FW.TTF"
  
  Delete "$INSTDIR\FZZY_GBK.TTF"
  Delete "$INSTDIR\FZY3FW.TTF"
SectionEnd


;----------------------------------------------------------------------------------


;用于安装字体
Function InstallFont
  DetailPrint "正在安装字体……"
  ;检查字体是否存在。
  IfFileExists $FONTS\FZZY_GBK.TTF lb_fontend
  ; MessageBox MB_RETRYCANCEL|MB_ICONQUESTION "字体已存在。请删除系统中的方正准圆_GBK字体 后点重试,或者点取消以后手动安装。" IDRETRY lb_jtfont IDCANCEL lb_jtfontend
;lb_font:
    CopyFiles $INSTDIR\FZZY_GBK.TTF $FONTS\FZZY_GBK.TTF
    Push "$FONTS\FZZY_GBK.TTF"
        System::Call "Gdi32::AddFontResource(t s) i .s"
        Pop $0
        IntCmp $0 0 0 +2 +2
        MessageBox MB_OK "注册字体失败"
        SendMessage ${HWND_BROADcast} ${WM_FONTCHANGE} 0 0
        return
lb_fontend:
        Detailprint "字体已经存在,跳过……"
        return
FunctionEnd

!include functions.nsh
 
安装硬盘上的字体(代码插入Function,Section内):
StrCpy $0 "D:\Fonts\Chs\经典空趣体繁.ttf"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" "经典空趣体繁(TrueType)" "$0"
System::Call "GDI32::AddFontResource(t) i ('$0') .s"