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

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

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

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

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


麻烦高手告知!
...全文
2743 13 打赏 收藏 转发到动态 举报
写回复
用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 自定义页面结合组件选择安装 一个关于组件跟自定义页面的控制问题 如何把安装卸载程序放到其他目录
NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System) 的缩写,它是一个Open Source的Windows系统下安装程序制作程序。它提供了安装卸载、系统设置、文件解压缩等功能。NSIS通过它的脚本语言来描述安装程序的行为和逻辑的,因为它基于脚本文件,所以你可以完全控制你的安装程序的每个部分。它的脚本语言支持变量、函数、字串处理,就像是一个普通的程序语言——但它是为安装程序这类应用所设计的。 此增强版除了主程序的翻译之外还把主要的文档作了翻译并修正了官方版本里简体中文语言习惯用语不合适之处。 单纯的使用脚本来编写安装程序对于大多数人来说不仅困难而且容易出错,为此,增强版里集成了一个相当好用的脚本编辑器 – VNISEdit。只需要根据向导就能轻松的做出很酷的安装程序,甚至,你还可以在向导里给你的安装程序添加启动画面、让你的安装程序在安装过程中播放音乐,而这,只需要点几下鼠标即可。除此之外,VNISEdit 附带的注册表转换插件还可以把 .reg 文件一次性的转换为 NSIS 脚本。 此增强版还在官方版本的基础上集成了一些有用的插件。由于各个组件在使用时各自独立,所以强烈推荐安装全部组件。 NSIS 特点: 开销小,一个完整功能的安装程序仅需要34k的额外开销。 支持大多数Windows平台,包括:Windows 9.x、Windows NT、Windows 2000、Windows XP、Windows 2003、Windows 7。 支持三大压缩算法: Zlig、BZips、LZMA。 支持脚本。 支持多语言。 支持安装界面定制。 提供可扩展的插件接口。 支持网络安装、补丁。 支持无人值守的安装模式。 此外,NSIS的license允许任何用途免费使用。 NSIS 增强: 此版本主要进行了以下增强: 1、集成了网络上能够收集到的大部分插件及应用示例; 2、集成了 VNISEdit v2.03(.nsi默认)和 NotePad2 两个脚本编辑器(.nsi右键); 3、集成了 NSISDialogDesigner自定义页面设计工具; 4、集成了 NSIS用户手册和 NSIS图文教程集锦。
轻狂志的这个版本被称为最好的NSIS软件打包工具,非常值得拥有。其他版本可以无视了。 NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System) 的缩写,它是一个Open Source的Windows系统下安装程序制作程序。它提供了安装卸载、系统设置、文件解压缩等功能。NSIS通过它的脚本语言来描述安装程序的行为和逻辑的,因为它基于脚本文件,所以你可以完全控制你的安装程序的每个部分。它的脚本语言支持变量、函数、字串处理,就像是一个普通的程序语言——但它是为安装程序这类应用所设计的。 在此对蓝色网际、贾可、gfm688、X-Star、Zhfi、Ansifa、水晶石、星空不寂寞、似水年华等大神为NSIS在国内的普及所作出的贡献致以崇高的敬意! 特点: 开销小,一个完整功能的安装程序仅需要34k的额外开销。 支持大多数Windows平台,包括:Windows 9.x、Windows NT、Windows 2000、Windows XP、Windows 2003、Windows 7、Windows 10。 支持三大压缩算法: Zlig、BZips、LZMA。 支持脚本。 支持多语言。 支持安装界面定制。 提供可扩展的插件接口。 支持网络安装、补丁。 支持无人值守的安装模式。 此外,NSIS的license允许任何用途免费使用。 增强版特点: 此版本主要进行了以下增强: 1、集成了网络上能够收集到的大部分插件及应用示例; 2、集成了 VNISEdit v2.03(.nsi默认)和 NotePad2 两个脚本编辑器(.nsi右键); 3、集成了 NSISDialogDesigner自定义页面设计工具; 4、集成了 NSIS用户手册和 NSIS图文教程集锦。

1,649

社区成员

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

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