2016-12-15 7 views
0

Lorsque je tente de désinstaller une police comme ça ...Annulation de l'enregistrement d'une police avec 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 

Je reçois le message d'erreur suivant:

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

En d'autres termes, il y a quelque chose de mal avec le section suivante dans le fichier 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 

quelqu'un peut-il, sinon me dire comment corriger le bogue, au moins me pointer dans la bonne direction? Il serait utile pour la communauté comme beaucoup ont eu ce problème mais personne ne l'a encore résolu, comme ici - http://forums.winamp.com/showthread.php?t=245701

+1

Utilisez-vous [this] (http://nsis.sourceforge.net/Register_Fonts) ou [that] (http://nsis.sourceforge.net/Advanced_Font_Installation) pour installer/supprimer des polices? Il semble que ce dernier est une macro plus récente avec un problème ("Tenter de réparer l'erreur du compilateur de désinstallation") fixé cette année. – idleberg

Répondre

0

Je n'ai malheureusement reçu aucune réponse, mais je dois partager la solution que j'ai trouvée, Depuis que j'ai vu que beaucoup de gens ont eu le même problème.

Il existe un bogue dans les macros pour supprimer les polices, à savoir "RemoveTTF", "RemoveTTFFont" et similaires dans les fichiers suivants: FontReg.nsh, FontRegAdv.nsh. Tous utilisent la même fonction appelée "GetFileNameCall" qui provoque l'erreur. Le problème avec cette fonction est que il voit "FontName" et "FontFileName" comme le même élément! En fait, le nom du fichier de police diffère du nom de la police. J'ai résolu le problème en copiant le code nécessaire à partir de FontRegAdv.nsh et en remplaçant les variables FontFileName et FontName par les noms de fichiers de polices et les noms de polices.

+0

Vous n'avez reçu aucune réponse, car vous ne nous avez jamais dit lequel des deux en-têtes de police du wiki que vous utilisez. J'ai déjà fixé l'une des pages wiki l'année dernière? – Anders