2016-12-15 70 views
0

字体当我尝试卸载这样的字体......。注销与NSIS

Section "un.Uninstall" 
    StrCpy $FONT_DIR $FONTS 
    !insertmacro RemoveTTFFont "$FONTS\Vani.ttf" 
    !insertmacro RemoveTTFFont "$FONTS\Vanib.ttf" 
    SendMessage ${HWND_BROADCAST} ${WM_FONTCHANGE} 0 0 /TIMEOUT=5000 
SectionEnd 

我收到以下错误信息:

Error in macro GetFileNameCall on macroline 2 
Error in macro RemoveTTFFont on macroline 9 
(...) aborting process 

换句话说,有什么东西不对的下面在FontReg.nsh文件部分:

!ifmacrondef GetFileNameCall 
    !macro GetFileNameCall _PATHSTRING _RESULT 
     Push `${_PATHSTRING}` 
     Call GetFileName 
     Pop ${_RESULT} 
    !macroend 
!endif 

!ifndef GetFileName 
    !define GetFileName `!insertmacro GetFileNameCall`  
    Function GetFileName 
     Exch $0 
     Push $1 
     Push $2  
     StrCpy $2 $0 1 -1 
     StrCmp $2 '\' 0 +3 
     StrCpy $0 $0 -1 
     goto -3  
     StrCpy $1 0 
     IntOp $1 $1 - 1 
     StrCpy $2 $0 1 $1 
     StrCmp $2 '' end 
     StrCmp $2 '\' 0 -3 
     IntOp $1 $1 + 1 
     StrCpy $0 $0 '' $1  
     end: 
     Pop $2 
     Pop $1 
     Exch $0 
    FunctionEnd 
!endif 

是否有人,如果不告诉我如何修正错误,至少指向正确的方向? 这对社区很有用,因为很多人都有这个问题,但没有人解决它,像这里 - http://forums.winamp.com/showthread.php?t=245701

+1

是否使用[这](http://nsis.sourceforge.net/Register_Fonts)或[是](http://nsis.sourceforge.net/Advanced_Font_Installation)安装/删除字体?看来后者是一个更近期的宏,有一个问题(“试图修复卸载编译器错误”)在今年修复。 – idleberg

回答

0

我还没有收到任何答案,不幸的是,但我必须分享我想出的解决方案,因为我看到很多人都有同样的问题。

在宏中有一个删除字体的错误,即“RemoveTTF”,“RemoveTTFFont”以及类似的声音在下列文件中:FontReg.nsh,FontRegAdv.nsh。他们都使用相同的称为“GetFileNameCall”的函数,这会导致错误。使用此功能的问题是,它看到“FONTNAME”和“FontFileName”为同一项目!事实上,字体文件名与字体名称不同。我通过复制FontRegAdv.nsh所需要的代码,并与实际的字体文件名和字体名称更换FontFileName和FONTNAME变量解决了这个问题。

+0

你,因为你从来没有告诉我们您所使用的从wiki上的两种字体头没有得到任何答案。我去年已经修复了其中一个wiki页面? – Anders