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

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

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

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

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


麻烦高手告知!
...全文
2874 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 现代界面定义结束 ------
NSIS安装制作教程 分为三个目录:基础,插件,脚本 NSIS System 插件 NSIS VPatch 3.1插件 NSIS InstallOptions 2 插件 NSIS Modern UI(新式用户界面)插件 NSIS的Modern UI插件 NSIS里特殊符号的表达方法 两组件互斥 NSIS 常用小问题合集 资源替换式的美化包制作方式代码 安装完毕后如何刷新文件关联 教你如何编程调用 NSIS 的插件 NSIS安装程序概要 实现 NSIS 自定义页面中的控件操作代码 如何使用NSIS实现多目录安装设置 如何用NSIS在加入注册表 用NSIS 制作自己的安装程序 bluewind 的 wmp9 nsis安装脚本 NSIS安装脚本简明教程 取得winamp的NSIS脚本的教程 迅雷5.7.3.389 AYU增强版的安装脚本 NSIS制作迅雷安装的脚本 迅雷5.7.2.371 DDR1.5版去广告版源代码说明 NSIS删除安装程序自身 帮助文件中关于静默安装的说明 NSIS实现静默安装的两种方法 nsis的附加任务代码 关于 NSIS 写入注册表的问题 少轻狂制作的Windows优化大师的安装脚本 aipc编写的nsis极点安装脚本 官方 NSIS 插件全集 全方位掌握NSIS的使用 NSIS语言里怎样安装一个.inf文件? 如果要关联某个文件给程序应该怎么做? 如何避免显示解压缩进度框? 关于检测操作系统的问题 在结束页面添加运行程序选项 NSIS的botton二选一如何实现NSIS灵活应用用逻辑库 NSIS调用inf安装驱动后的卸载问题 NSIS的组件互斥代码 在NSIS中如何禁止一个组件组的父项的点击事件 关于打破 NSIS 的 8192 字节限制的更简单方法 NSIS 自定义页面结合组件选择安装 一个关于组件跟自定义页面的控制问题 如何把安装卸载程序放到其他目录

1,658

社区成员

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

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