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

NSIS如何在unistall部分的messageBox中设置变量,nsis,Nsis,我有一个文件,在这个文件中有不同语言的不同LangString。 在另一个文件的unistall部分中,我希望调用messagebox,具体取决于语言,即LangString文件中正确的LangString 在安装部分,它可以正常工作 Section "Uninstall" MessageBox MB_YESNO|MB_ICONQUESTION "$(UnSAVE_PROFILE)" IDYES borrar_perfil IDNO no_borrar_perfil borrar_perfil

我有一个文件,在这个文件中有不同语言的不同LangString。 在另一个文件的unistall部分中,我希望调用messagebox,具体取决于语言,即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 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?"
有什么想法吗?
谢谢

如果您建议在安装程序中使用(在
.onInit
函数中)选择语言

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

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

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

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

您的问题不清楚:问题是什么?邮件始终以英语显示?谢谢回复。是的,我在un.onInit中也保存了这样的表格。问题是messageBox无法读取$(UnSAVE_PROFILE):我在卸载程序期间没有使用langstring设置messageBox的示例,但我猜是缺少
un.
前缀的问题。难道编译器输出中没有警告说
卸载程序语言字符串必须以un开头吗。(字符串名称)?你好,Seki!我解决了我的问题。。。。问题是我的langString的路径是错误的:S谢谢大家:)
!insertmacro MUI_UNGETLANGUAGE
!define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
!define MUI_LANGDLL_REGISTRY_KEY "Software\${Company}\${AppRegName}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"