2016-12-15 68 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