NSIS脚本的语言包文件,存放在以下目录:

NSIS安装目录\Contrib\Language files

在这个目录下有很多语言包,一般简体中文使用的语言包是 SimpChinese.nlf 和 SimpChinese.nsh 两个文件。

在NSIS脚本中,写入下面这句话,就可以调用简体中文语言包了。

!insertmacro MUI_LANGUAGE "SimpChinese"

不过,NSIS程序默认的简体中文语言包有很多问题。这个语言包遣词非常生硬,难以满足客户的很多定制化要求。

因此我决定在这个语言包的基础上,自己新写一组语言包:CustomizedChinese

CustomizedChinese.nlf 代码如下:

# ###################################
# nlf file of CustomizedChinese
# Author: Tsybius2014
# DateTime: 2016/04/06
# Remark: none
# ###################################
# Header, don't edit
NLF v6
# Language ID
2052
# Font and size - dash (-) means default 字体名称与大小
宋体
9
# Codepage - dash (-) means ANSI code page ANSI 字码页
936
# RTL - anything else than RTL means LTR 由右至左书写
-
# ^Branding
Nullsoft Install System %s
# ^SetupCaption
$(^Name) 安装
# ^UninstallCaption
$(^Name) 卸载
# ^LicenseSubCaption
: 授权协议
# ^ComponentsSubCaption
: 安装选项
# ^DirSubCaption
: 安装文件夹
# ^InstallingSubCaption
: 正在安装
# ^CompletedSubCaption
: 已完成
# ^UnComponentsSubCaption
: 卸载选项
# ^UnDirSubCaption
: 卸载文件夹
# ^ConfirmSubCaption
: 确认
# ^UninstallingSubCaption
: 正在卸载
# ^UnCompletedSubCaption
: 完成
# ^BackBtn
< 上一步(&P)
# ^NextBtn
下一步(&N) >
# ^AgreeBtn
我接受(&I)
# ^AcceptBtn
我接受“授权协议”中的条款(&A)
# ^DontAcceptBtn
我不接受“授权协议”中的条款(&N)
# ^InstallBtn
安装(&I)
# ^UninstallBtn
卸载(&U)
# ^CancelBtn
取消(&C)
# ^CloseBtn
关闭(&L)
# ^BrowseBtn
浏览(&B)...
# ^ShowDetailsBtn
显示细节(&D)
# ^ClickNext
单击 [下一步(N)] 继续。
# ^ClickInstall
单击 [安装(I)] 开始安装。
# ^ClickUninstall
单击 [卸载(U)] 开始卸载。
# ^Name
名称
# ^Completed
已完成
# ^LicenseText
在安装 $(^NameDA)之前请检阅授权协议。如果你接受协议中所有条款,单击 [我接受(I)] 。
# ^LicenseTextCB
在安装 $(^NameDA)之前请检阅授权协议。如果你接受协议中所有条款,单击下方的勾选框。 $_CLICK
# ^LicenseTextRB
在安装 $(^NameDA)之前请检阅授权协议。如果你接受协议中所有条款,选择下方的第一个选项。 $_CLICK
# ^UnLicenseText
在卸载 $(^NameDA)之前请检阅授权协议。如果你接受协议中所有条款,单击 [我接受(I)] 。
# ^UnLicenseTextCB
在卸载 $(^NameDA)之前请检阅授权协议。如果你接受协议中所有条款,单击下方的勾选框。 $_CLICK
# ^UnLicenseTextRB
在卸载 $(^NameDA)之前请检阅授权协议。如果你接受协议中所有条款,选择下方的第一个选项。 $_CLICK
# ^Custom
自定义
# ^ComponentsText
勾选你想要安装的组件,并解除勾选你不希望安装的组件。 $_CLICK
# ^ComponentsSubText1
选定安装的类型:
# ^ComponentsSubText2_NoInstTypes
选定安装的组件:
# ^ComponentsSubText2
或者,自定义选定想安装的组件:
# ^UnComponentsText
勾选你想要卸载的组件,并解除勾选你不希望卸载的组件。 $_CLICK
# ^UnComponentsSubText1
选择卸载的类型:
# ^UnComponentsSubText2_NoInstTypes
选择要卸载的组件:
# ^UnComponentsSubText2
或是,选择想要卸载的可选项组件:
# ^DirText
选择 $(^NameDA)要安装的文件夹。要安装到其他文件夹,单击 [浏览(B)] 并选择该文件夹。\r\n\r\n$_CLICK
# ^DirSubText
目标文件夹
# ^DirBrowseText
选择要安装 $(^NameDA)的文件夹位置:
# ^UnDirText
卸载向导会将 $(^NameDA)从下面的文件夹中卸载。要卸载不同文件夹中的内容,单击 [浏览(B)] 并选择其他的文件夹。 $_CLICK
# ^UnDirSubText
""
# ^UnDirBrowseText
选择要卸载 $(^NameDA)的文件夹位置:
# ^SpaceAvailable
"可用空间: "
# ^SpaceRequired
"所需空间: "
# ^UninstallingText
这个向导将从你的电脑卸载 $(^NameDA)。 $_CLICK
# ^UninstallingSubText
卸载目录:
# ^FileError
不能打开要写入的文件: \r\n\t"$0"\r\n单击 [Abort] 放弃安装,\r\n [Retry] 重新尝试写入文件,或\r\n [Ignore] 忽略这个文件。
# ^FileError_NoIgnore
不能打开要写入的文件: \r\n\t"$0"\r\n单击 [Retry] 重新尝试写入文件,或\r\n [Cancel] 取消安装。
# ^CantWrite
"无法写入: "
# ^CopyFailed
"复制失败 "
# ^CopyTo
"复制到: "
# ^Registering
"正在注册: "
# ^Unregistering
"正在解除注册: "
# ^SymbolNotFound
"无法找到符号: "
# ^CouldNotLoad
"无法加载: "
# ^CreateFolder
"创建文件夹: "
# ^CreateShortcut
"创建快捷方式: "
# ^CreatedUninstaller
"创建卸载程序: "
# ^Delete
"删除文件: "
# ^DeleteOnReboot
"重新启动后删除: "
# ^ErrorCreatingShortcut
"正在创建快捷方式时发生错误: "
# ^ErrorCreating
"正在创建时发生错误: "
# ^ErrorDecompressing
"正在解压缩数据发生错误!已损坏的安装程序?"
# ^ErrorRegistering
"正在注册 DLL 时发生错误"
# ^ExecShell
"运行外部程序: "
# ^Exec
"运行: "
# ^Extract
"抽取: "
# ^ErrorWriting
"抽取: 无法写入文件 "
# ^InvalidOpcode
"安装损毁: 无效的操作代码 "
# ^NoOLE
"没有 OLE 用于: "
# ^OutputFolder
"输出目录: "
# ^RemoveFolder
"移除目录: "
# ^RenameOnReboot
"重新启动后重命名: "
# ^Rename
"重命名: "
# ^Skipped
"已跳过: "
# ^CopyDetails
"复制细节到剪贴板 "
# ^LogInstall
"日志安装进程"
# byte
B
# kilo
K
# mega
M
# giga
G

CustomizedChinese.nsh 代码如下

;Language: 'Chinese (Customized)' (2052)
;Translator: Tsybius2014
;Revision date: 2016/04/06
;Verified by: !insertmacro LANGFILE "CustomizedChinese" "Chinese (Customized)"!ifdef MUI_WELCOMEPAGE${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "欢迎使用 $(^NameDA)安装向导"${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "本向导将指引您完成 $(^NameDA)的安装。$\r$\n$\r$\n在开始安装之前,建议关闭其他所有应用程序。此操作将允许“安装程序”更新指定的系统文件,而不需要重新启动您的电脑。$\r$\n$\r$\n若您的电脑已安装 $(^NameDA)程序,请先行卸载再进行安装。$\r$\n$\r$\n$_CLICK"
!endif!ifdef MUI_UNWELCOMEPAGE${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "欢迎使用 $(^NameDA)卸载向导"${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "本向导将指引您完成 $(^NameDA)的卸载。$\r$\n$\r$\n在开始卸载之前,请确认 $(^NameDA)已经关闭。$\r$\n$\r$\n$_CLICK"
!endif!ifdef MUI_LICENSEPAGE${LangFileString} MUI_TEXT_LICENSE_TITLE "授权协议"${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "在安装 $(^NameDA)之前,请阅读下面的授权协议。"${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "如果您接受本协议,单击 [我接受(I)] 继续安装。如果您选定 [取消(C)] ,安装程序将会关闭。必须接受此协议后才能安装 $(^NameDA)。"${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "如果您接受“授权协议”,选中下方的勾选框,选中后才能安装 $(^NameDA)。$_CLICK"${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "如果您接受“授权协议”,选择下方第一个选项。必须要接受协议才能安装 $(^NameDA)。$_CLICK"
!endif!ifdef MUI_UNLICENSEPAGE${LangFileString} MUI_UNTEXT_LICENSE_TITLE "授权协议"${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "在卸载 $(^NameDA)之前,请阅读下面的责任条款。"${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "如果您接受本协议,单击 [我接受(I)] 继续卸载。如果您选定 [取消(C)] ,安装程序将会关闭。必须要接受此协议后才能卸载 $(^NameDA)。"${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "如果您接受“授权协议”,单击下方的勾选框。必须要接受协议才能卸载 $(^NameDA)。$_CLICK"${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "如果您接受“授权协议”,选择下方第一个选项。必须要接受协议才能卸载 $(^NameDA)。$_CLICK"
!endif!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE${LangFileString} MUI_INNERTEXT_LICENSE_TOP "按 [PgDn] 阅读“授权协议”的其余部分。"
!endif!ifdef MUI_COMPONENTSPAGE${LangFileString} MUI_TEXT_COMPONENTS_TITLE "选择组件"${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "选择您想要安装 $(^NameDA)的那些功能。"
!endif!ifdef MUI_UNCOMPONENTSPAGE${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "选定组件"${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "选定 $(^NameDA)当中您想要卸载的功能。"
!endif!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "描述"!ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "移动您的鼠标指针到组件之上,便可见到它的描述。"!else${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "移动您的鼠标指针到组件之上,便可见到它的描述。"!endif
!endif!ifdef MUI_DIRECTORYPAGE${LangFileString} MUI_TEXT_DIRECTORY_TITLE "选择安装位置"${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "选择 $(^NameDA)的安装文件夹。"
!endif!ifdef MUI_UNDIRECTORYPAGE${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "选定卸载位置"${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "选定 $(^NameDA)要卸载的文件夹。"
!endif!ifdef MUI_INSTFILESPAGE${LangFileString} MUI_TEXT_INSTALLING_TITLE "正在安装"${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "$(^NameDA)正在安装,请等候..."${LangFileString} MUI_TEXT_FINISH_TITLE "安装完成"${LangFileString} MUI_TEXT_FINISH_SUBTITLE "安装成功。"${LangFileString} MUI_TEXT_ABORT_TITLE "安装己中止"${LangFileString} MUI_TEXT_ABORT_SUBTITLE "安装失败。"
!endif!ifdef MUI_UNINSTFILESPAGE${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "正在卸载"${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE " $(^NameDA)正在卸载,请等候..."${LangFileString} MUI_UNTEXT_FINISH_TITLE "卸载已完成"${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "卸载成功。"${LangFileString} MUI_UNTEXT_ABORT_TITLE "卸载已中止"${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "卸载失败。"
!endif!ifdef MUI_FINISHPAGE${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "正在完成 $(^NameDA)安装向导"${LangFileString} MUI_TEXT_FINISH_INFO_TEXT " $(^NameDA)已安装在您的电脑。$\r$\n$\r$\n单击 [完成(F)] 关闭此向导。"${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "您的系统需要重新启动,以便完成 $(^NameDA)的安装。现在要重新启动吗?"
!endif!ifdef MUI_UNFINISHPAGE${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "正在完成 $(^NameDA)卸载向导"${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT " $(^NameDA)已从您的电脑卸载。$\r$\n$\r$\n单击 [完成] 关闭这个向导。"${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "电脑需要重新启动,以便完成 $(^NameDA)的卸载。现在想要重新启动吗?"
!endif!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "是,现在重新启动(&Y)"${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "否,我稍后再自行重新启动(&N)"${LangFileString} MUI_TEXT_FINISH_RUN "运行 $(^NameDA)(&R)"${LangFileString} MUI_TEXT_FINISH_SHOWREADME "显示“自述文件”(&M)"${LangFileString} MUI_BUTTONTEXT_FINISH "完成(&F)"
!endif!ifdef MUI_STARTMENUPAGE${LangFileString} MUI_TEXT_STARTMENU_TITLE "选择“开始菜单”文件夹"${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "选择“开始菜单”文件夹,用于创建程序的快捷方式。"${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "选择“开始菜单”文件夹,创建程序的快捷方式。如输入的菜单名称不存在于“开始菜单”中,向导会自动创建新文件夹。"${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "不创建快捷方式(&N)"
!endif!ifdef MUI_UNCONFIRMPAGE${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "卸载 $(^NameDA)"${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "从您的电脑卸载 $(^NameDA)"
!endif!ifdef MUI_ABORTWARNING${LangFileString} MUI_TEXT_ABORTWARNING "您确定要退出 $(^Name)安装程序吗?"
!endif!ifdef MUI_UNABORTWARNING${LangFileString} MUI_UNTEXT_ABORTWARNING "您确定要退出 $(^Name)卸载吗?"
!endif

将这两个文件,放置到下面目录:

NSIS安装目录\Contrib\Language files

再在NSIS脚本中加入这句话:

!insertmacro MUI_LANGUAGE "CustomizedChinese"

就可以应用这个新的语言包了。假定某程序定义了PRODUCT_NAME如下:

!define PRODUCT_NAME "X系统"

使用makensisw.exe打包完毕后,就可以看到新语言包的效果了!

注意:

1、在nsh脚本中使用$(^NameDA)和$(^Name)替换PRODUCT_NAME时,NSIS程序会在名称后面自动添加一个空格。

2、一个安装向导并不是所有的文字描述都被写到语言包里,比如有些自定义的MessageBox的文字描述,就需要在NSIS脚本中自行编写。

END

转载于:https://my.oschina.net/Tsybius2014/blog/653925

NSIS脚本学习:创建 MUI 界面使用的自定义语言包文件(nlf nsh)相关推荐

  1. NSIS脚本学习:使用 LogicLib.nsh 实现基本流程控制结构

    LogicLib.nsh 程序的三种基本结构包括:顺序结构.分支结构.循环结构.顺序结构是最基本的结构,本文主要说明了如何在NSIS脚本中写出分支结构和循环结构. 最基本的分支结构和循环结构可以用St ...

  2. CentOS学习笔记(一):中文语言包及输入法的安装使用

    1.中文语言包安装 命令行执行: yum install fonts-chinese yum install fonts-ISO8859-2 2.切换成中文语言 菜单->System->A ...

  3. linux 学习笔记(二)下载中文语言包

    主页面是英文对我们对英语不太熟悉的人不是很友好,所以我们要下载中文语言包解决这一困难 首先我们需要换源,默认是美国源,下载很慢,甚至会失败. 1.搜索soft 2.选择最下面那一个 3.找到chain ...

  4. NSIS脚本学习:判断版本并安装.NET Framework运行环境

    前言 目前开发的程序以基于.net的应用程序为主,程序开发好后,需要进行安装包的生成,及setup文件的生成. 常见的是NSIS工具,之前一直用的单文件打包工具,不适合将运行环境加进去,因此开始使用更 ...

  5. IOT开发的学习-linux#5 gcc编译生成一个c语言实行文件,用sh调用实行

    步骤1:做成 test.c文件 #include<stdio.h> void main() { printf("hello world!\n"); } 步骤2:用gcc ...

  6. NSIS学习记录(三)————NSIS脚本简介

    文章目录 一.介绍 二.脚本结构 Installer Attributes Page Sections Functions 一.介绍 标题NSIS脚本是有特定语法规则的规范语言. 可以用任何文本编辑器 ...

  7. Shell脚本学习-阶段二十七-命令解释一

    文章目录-命令解释一 前言 as expr gcc gcov gdb indent ld ldconfig ldd make mktemp nm objdump perl php protoize u ...

  8. r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数

    在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...

  9. linux 批量删除任务,Linux-Shell脚本学习心得之批量创建、删除用户

    继上次博文,继续为大家分享脚本实例:批量创建.删除用户 说到,用户的管理,大家都不会陌生,就是创建.删除.禁用等等的管理,但,大多都是管 理员手工操作,效率不是很高,今天,就给大家说说Shell脚本是 ...

最新文章

  1. hp远程桌面服务器,hp服务器通过ilo远程安装操作系统
  2. [Treap]JZOJ 4737 金色丝线将瞬间一分为二
  3. BigDecimal 使用详解
  4. 空格替换_O(n)方法
  5. Angular 项目 ng serve 背后发生的事情
  6. backtype.storm.generated.InvalidTopologyException:null问题的解决
  7. 余承东卸任华为云CEO 兼任智能汽车解决方案 BU CEO
  8. NS2中认知无线电仿真
  9. R语言-运筹学线性规划实例
  10. 一级域名二级域名区别
  11. java实现界面化,java实现图形化界面
  12. 深度解密Go语言之map
  13. Vue引入并使用Element-UI组件库的两种方式
  14. 编程练习:MP3播放器
  15. 人工智能之旅,真的特别费人工!
  16. Mac电脑投屏到Linux,苹果电脑投屏到显示器的三种常见方式
  17. Win11中Unity商店资源无法在PackageManager中下载
  18. 如何将excel的一列变成多列(多排表使用帮助)
  19. SQL Server 2005的身份验证模式修改步骤
  20. wap2app小技巧 生成自有证书(安卓篇)

热门文章

  1. BandiZip解压工具
  2. 20个基于DPDK开源项目,建议收藏
  3. SpringBoot 实现自定义钉钉机器人
  4. 用博奥如何导入单项工程电子表_博奥工程系列软件实操手册第六册.doc
  5. 前端eslint+prettier+lint-staged配置
  6. PayPal集成标准版案例(asp.net)关键源码
  7. 从0到1构建一个电商平台 – 开发篇(转)
  8. 编码:隐匿在计算机软硬件背后的语言(2)--二进制
  9. 读书笔记 - 《基业长青》
  10. 2021年高教社杯全国大学生数学建模竞赛赛题C题 生产企业原材料的订购与运输 分析、思路与参考文献!!(关注持续更新!!)