NSIS制作安装包,怎样实现英文安装,英文卸载界面,中文安装中文卸载?

寂寞vs爱神 2014-06-18 03:55:48
最近遇到一个烦事,用NSIS 2.46汉化版制作一个安装包

但是在中英文选择后,卸载一直是中文?

有没有大侠,高手帮忙解决下? 急急!!!!!

PS:应用程序名 如果是中文的,也不能根据选择的语言 进行更改.


麻烦高手告知!
...全文
2873 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoluhelu 2016-05-04
  • 打赏
  • 举报
回复
请问楼主怎么解决的
qq_14958087 2015-08-31
  • 打赏
  • 举报
回复
请问楼主解法
寂寞vs爱神 2014-09-04
  • 打赏
  • 举报
回复
恩。后面我研究出来了。
「已注销」 2014-07-17
  • 打赏
  • 举报
回复
我試過了,NSIS 確實有此 BUG,un.onInit 中修改語言無效,都是當前系統的語言。
寂寞vs爱神 2014-06-26
  • 打赏
  • 举报
回复
引用 8 楼 SXJIAKE 的回复:
我很少使用多国语言包,因此不知道是否可卸载时显示语言选择,但个人认为没必要。NSIS 的帮助中也只提到了卸载时读取安装时记录的语言的方法。对于不同的语言使用不同的名字和提示文字,用 LangString 就能解决了。一个简单的例子:
Name "$(^AppName)"
OutFile ThunderSetup.exe

# 储存用户安装时所选语言的注册表键值
!define MUI_LANGDLL_REGISTRY_ROOT root
!define MUI_LANGDLL_REGISTRY_KEY key
!define MUI_LANGDLL_REGISTRY_VALUENAME value

!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "SimpChinese"

LangString AppName    ${LANG_ENGLISH}     "Thunder"
LangString AppName    ${LANG_SIMPCHINESE} "迅雷"
LangString UninstAsk  ${LANG_ENGLISH}     "Are you sure to remove $(^AppName) and its all components completely?"
LangString UninstAsk  ${LANG_SIMPCHINESE} "您确实要完全卸载 $(^AppName),及其所有的组件?"
LangString UninstDone ${LANG_ENGLISH}     "$(^AppName) has been remove from your computor successfully!"
LangString UninstDone ${LANG_SIMPCHINESE} "$(^AppName) 已成功地从您的计算机卸载。"

Function .onInit
    # 安装时加入此行启动前显示语言选择对话框
    !insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd

Function un.onInit
    # 卸载时从注册表读取安装时用户选择的语言
    !insertmacro MUI_UNGETLANGUAGE
    MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "$(^UninstAsk)" IDYES +2
    Abort
FunctionEnd

Function un.onUninstSuccess
    HideWindow
    MessageBox MB_OK|MB_ICONINFORMATION "$(^UninstDone)"
FunctionEnd
这个例子不全,只有你们可能用到的部分,供参考。
你好。你的用版本是不是2.46版。 你的代码我参考了下。不行。 我的脚本如下 ; 该脚本使用 HM VNISEdit 脚本编辑器向导产生 ; 安装程序初始定义常量 !define PRODUCT_NAME "IPC配置工具" !define PRODUCT_VERSION "1.0" !define PRODUCT_PUBLISHER "My company, Inc." !define PRODUCT_WEB_SITE "http://www.mycompany.com" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" SetCompressor lzma ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------ !include "MUI.nsh" !include "LogicLib.nsh" ; MUI 预定义常量 !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" ; 语言选择窗口常量设置 !define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" ; 欢迎页面 !insertmacro MUI_PAGE_WELCOME ; 安装过程页面 !insertmacro MUI_PAGE_INSTFILES ; 安装完成页面 !insertmacro MUI_PAGE_FINISH ; 安装卸载过程页面 !insertmacro MUI_UNPAGE_INSTFILES ; 安装界面包含的语言设置 !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "SimpChinese" LangString PRODUCT_NAME ${LANG_ENGLISH} "IPCConfigurator" LangString PRODUCT_NAME ${LANG_SIMPCHINESE} "IPC配置工具" LangString Message_DEL_ALL ${LANG_ENGLISH} "Are you sure you want to completely remove$(^Name),and all of its components?" LangString Message_DEL_ALL ${LANG_SIMPCHINESE} "您确实要完全移除$(^Name),及其所有的组件?" LangString Message_SUCC_REMOVE ${LANG_ENGLISH} "$(^Name) has been successfully removed from your computer." LangString Message_SUCC_REMOVE ${LANG_SIMPCHINESE} "$(^Name) 已成功地从您的计算机移除。" ; 安装预释放文件 !insertmacro MUI_RESERVEFILE_LANGDLL !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; ------ MUI 现代界面定义结束 ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "IPCSetup.exe" 下面是卸载的 Function un.onInit !insertmacro MUI_UNGETLANGUAGE MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "$(Message_DEL_ALL)" IDYES +2 Abort FunctionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(Message_SUCC_REMOVE)" FunctionEnd 大侠能否再指点下?
「已注销」 2014-06-19
  • 打赏
  • 举报
回复
我很少使用多国语言包,因此不知道是否可卸载时显示语言选择,但个人认为没必要。NSIS 的帮助中也只提到了卸载时读取安装时记录的语言的方法。对于不同的语言使用不同的名字和提示文字,用 LangString 就能解决了。一个简单的例子:
Name "$(^AppName)"
OutFile ThunderSetup.exe

# 储存用户安装时所选语言的注册表键值
!define MUI_LANGDLL_REGISTRY_ROOT root
!define MUI_LANGDLL_REGISTRY_KEY key
!define MUI_LANGDLL_REGISTRY_VALUENAME value

!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "SimpChinese"

LangString AppName    ${LANG_ENGLISH}     "Thunder"
LangString AppName    ${LANG_SIMPCHINESE} "迅雷"
LangString UninstAsk  ${LANG_ENGLISH}     "Are you sure to remove $(^AppName) and its all components completely?"
LangString UninstAsk  ${LANG_SIMPCHINESE} "您确实要完全卸载 $(^AppName),及其所有的组件?"
LangString UninstDone ${LANG_ENGLISH}     "$(^AppName) has been remove from your computor successfully!"
LangString UninstDone ${LANG_SIMPCHINESE} "$(^AppName) 已成功地从您的计算机卸载。"

Function .onInit
    # 安装时加入此行启动前显示语言选择对话框
    !insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd

Function un.onInit
    # 卸载时从注册表读取安装时用户选择的语言
    !insertmacro MUI_UNGETLANGUAGE
    MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "$(^UninstAsk)" IDYES +2
    Abort
FunctionEnd

Function un.onUninstSuccess
    HideWindow
    MessageBox MB_OK|MB_ICONINFORMATION "$(^UninstDone)"
FunctionEnd
这个例子不全,只有你们可能用到的部分,供参考。
寂寞vs爱神 2014-06-19
  • 打赏
  • 举报
回复
引用 6 楼 zhangyonghui2117 的回复:
[quote=引用 5 楼 chenhua1986 的回复:] Function un.onInit !insertmacro MUI_UNGETLANGUAGE ; Push MUI_LANGUAGE ; Pop $LANGUAGE MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?/*这里改成英文??*/" IDYES +2 Abort FunctionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。/*这里改成英文??*/" FunctionEnd 改成英文的
你是说把内容改成英文民?,这样的话肯定是可以的[/quote] 消息框可以改,但是它的主对话框还是中文的,
「已注销」 2014-06-18
  • 打赏
  • 举报
回复
引用 5 楼 chenhua1986 的回复:
Function un.onInit !insertmacro MUI_UNGETLANGUAGE ; Push MUI_LANGUAGE ; Pop $LANGUAGE MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?/*这里改成英文??*/" IDYES +2 Abort FunctionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。/*这里改成英文??*/" FunctionEnd 改成英文的
你是说把内容改成英文民?,这样的话肯定是可以的
寂寞vs爱神 2014-06-18
  • 打赏
  • 举报
回复
Function un.onInit !insertmacro MUI_UNGETLANGUAGE ; Push MUI_LANGUAGE ; Pop $LANGUAGE MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2 Abort FunctionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。" FunctionEnd 改成英文的
寂寞vs爱神 2014-06-18
  • 打赏
  • 举报
回复
引用 3 楼 zhangyonghui2117 的回复:
我的刚才也试了,卸载的没有语言选择,也找不到相关宏,我的版本是nsis编辑器HM VNISEdit2.0.3
是啊,但是有英文卸载,期待大牛出来,指导下。
「已注销」 2014-06-18
  • 打赏
  • 举报
回复
我的刚才也试了,卸载的没有语言选择,也找不到相关宏,我的版本是nsis编辑器HM VNISEdit2.0.3
寂寞vs爱神 2014-06-18
  • 打赏
  • 举报
回复
请问 怎么解决这个问题?
寂寞vs爱神 2014-06-18
  • 打赏
  • 举报
回复
!define PRODUCT_NAME "配置工具" !define PRODUCT_VERSION "1.0" !define PRODUCT_PUBLISHER "My company, Inc." !define PRODUCT_WEB_SITE "http://www.mycompany.com" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" SetCompressor lzma ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------ !include "MUI.nsh" !include "LogicLib.nsh" ; MUI 预定义常量 !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" ; 语言选择窗口常量设置 !define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" ; 欢迎页面 !insertmacro MUI_PAGE_WELCOME ; 安装过程页面 !insertmacro MUI_PAGE_INSTFILES ; 安装完成页面 !insertmacro MUI_PAGE_FINISH ; 安装卸载过程页面 !insertmacro MUI_UNPAGE_INSTFILES ; 安装界面包含的语言设置 !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "SimpChinese" ; 安装预释放文件 !insertmacro MUI_RESERVEFILE_LANGDLL !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; ------ MUI 现代界面定义结束 ------

1,658

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧