!include "WinMessages.nsh"
; 要求管理员权限
RequestExecutionLevel admin
!macro InstallSingleFont FILE_NAME DISPLAY_NAME
; 生成唯一标签
!define UNIQUE_FONT_DONE "font_done_${__LINE__}"
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" "${DISPLAY_NAME}"
StrCmp $R0 "" 0 ${UNIQUE_FONT_DONE}
SetOutPath "$TEMP"
File "Fonts\${FILE_NAME}"
CopyFiles "$TEMP\${FILE_NAME}" "$WINDIR\Fonts\${FILE_NAME}"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" "${DISPLAY_NAME}" "${FILE_NAME}"
${UNIQUE_FONT_DONE}:
!undef UNIQUE_FONT_DONE
!macroend
; 安装初始化(在显示UI之前执行)
Function .onInit
; 调用卸载旧版本函数
;Call UninstallOldVersion
; 其他初始化操作(如检测权限、设置安装路径等)
; ...
Call DoInstallationFonts
FunctionEnd
Function DoInstallationFonts
!insertmacro InstallSingleFont "SourceHanSansCN-Regular.ttf" "Source Han Sans CN (TrueType)"
!insertmacro InstallSingleFont "SegoeUI.ttf" "Segoe UI (TrueType)"
; 不会再冲突
FunctionEnd