NSIS如何在unistall部分的messageBox中设置变量

时间:2015-01-07 12:26:26

标签: nsis

我有一个文件,在这个文件中有不同语言的不同LangString。 在另一个文件中,在unistall部分,我想调用消息框,具体取决于语言,Langstring文件中的正确LangString。

在安装部分,它可以正常工作

Section "Uninstall"

MessageBox MB_YESNO|MB_ICONQUESTION "$(UnSAVE_PROFILE)" IDYES borrar_perfil IDNO no_borrar_perfil
borrar_perfil:
    DeleteRegKey   HKCU "Software\XXX"
    RMDir /r "$APPDATA\mulehome\"
    RMDir /r "$APPDATA\..\Local\XXX\"
no_borrar_perfil:
  Delete "$INSTDIR\XXX"

LangString文件:

LangString UnSAVE_PROFILE ${LANG_PORTUGUESE} "Do you want delete the configuration files?"
LangString UnSAVE_PROFILE ${LANG_SPANISH} "Quieres eliminar también los ficheros de configuración?"

有什么想法吗? THX !!

1 个答案:

答案 0 :(得分:0)

如果您在安装程序中提出语言选择(在.onInit功能中)

!insertmacro MUI_LANGDLL_DISPLAY 

您可以在卸载程序中找回该设置(在un.onInit函数中)

!insertmacro MUI_UNGETLANGUAGE

安装程序应该在注册表中保留语言设置,在我的设置中我精确地确定了持久性的位置:

!define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
!define MUI_LANGDLL_REGISTRY_KEY "Software\${Company}\${AppRegName}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"

另外,不要忘记为卸载程序定义单独的LangStrings(因为该应用程序使用不同的字符串表),并带有un.前缀。