Inno Setup选择语言并写入配置文件、翻译提示信息
制作一个支持多种语言的安装包,应当具备以下几种能力:
- 读取系统语言设置,并作为启动时的默认语言
- 可选择安装的语言,随后显示对应语言的的安装提示语
- 将选择的语言写入到配置文件,以供程序运行时进行判断
对于默认语言,可以设置 Setup 区段的 LanguageDetectionMethod 属性,有三个有效值,uilanguage 根据用户的系统界面语言作为默认语言,locale 根据时区确定默认语言,none 则根据 Languages 区段指定的第一种语言作为默认语言,默认为 uilanguage。
对于语言选择,可以设置 Setup 区段的 ShowLanguageDialog 属性,显示语言选择框,并在 Languages 区段指定语言列表,如下所示:
[Setup]
//[Setup]-该区段包含用于安装程序和卸载程序的全局设置
//语言选择框
ShowLanguageDialog=yes
//根据系统语言初始化显示的语言,默认uilanguage
LanguageDetectionMethod=uilanguage[Languages]
//[Languages]-定义安装程序中可使用的语言
//破解版的Default一般是中文,如果是用的原版默认不带中文,需要单独下载
Name: "zh"; MessagesFile: "compiler:Default.isl"
Name: "en"; MessagesFile: "compiler:English.isl"
在 isl 翻译文件中,指定了每个提示框中对应的文本,所以切换语言后,自带的提示信息就切换到对应的语言进行显示了。但是我们还会写一些自己的提示信息,这时候需要借助 CustomMessages 区段进行翻译(可以写在 isl,也可以写在 iss 中),定义好变量后,在对应的位置用 {cm:...} 替换,详见文末的脚本。
写配置文件可以在 CurStepChanged 事件函数中进行,借助 SetIniString 函数写 ini 配置文件。
//定义一些常量
//程序版本号
#define MyAppVersion "1.1.0.0001"
//可执行程序名
#define MyAppExeName "demo.exe"
//程序图标
#define MyAppIcon "logo.ico"
//程序uuid
#define MyAppUid "FCA18CA6-1C3D-4C6E-A8AF-823A34619B21"[Setup]
//[Setup]-该区段包含用于安装程序和卸载程序的全局设置
//每个程序单独一个id,这是会作为注册表key的,别混用
AppId={{{#MyAppUid}}
//程序安装后的名字
AppName={cm:CmAppName}
//程序版本号
AppVersion={#MyAppVersion}
//指定安装程序版本信息的文件描述值
VersionInfoDescription={cm:CmAppName} Setup
//指定安装程序版本信息产品名称值
VersionInfoProductName={cm:CmAppName}
//不显示选择开始菜单文件夹 向导页面
DisableProgramGroupPage=yes
//默认安装目录
DefaultDirName=D:\Demo
//安装包生成后所在文件夹和文件名
OutputDir=install
OutputBaseFilename=我的安装程序
//指定安装和卸载程序图标
SetupIconFile={#MyAppIcon}
//控制面板卸载图标
UninstallDisplayIcon={#MyAppIcon}
//语言选择框
ShowLanguageDialog=yes
//根据系统语言初始化显示的语言,默认uilanguage
LanguageDetectionMethod=uilanguage
//默认Innosetup 会根据机器语言能否支持显示语言包
//新版本已废弃
//ShowUndisplayableLanguages=yes[Languages]
//[Languages]-定义安装程序中可使用的语言
//破解版的Default一般是中文,如果是用的原版默认不带中文,需要单独下载
Name: "zh"; MessagesFile: "compiler:Default.isl"
Name: "en"; MessagesFile: "compiler:English.isl"[CustomMessages]
//[CustomMessages]- 用于定义 {cm:...} 常量的自定义消息值
//也可以写到isl文件的CustomMessages字段
zh.CmAppName=我的例程
zh.CmMessage=测试消息框文本及参数,%1 !en.CmAppName=My Demo
en.CmMessage=Test message box text and parameters, %1 ![Tasks]
//[Tasks]-定义安装程序在执行安装期间所有由用户定制的任务。这些任务以选项框和单选项形式在附加任务向导页面中出现。
//创建桌面图标
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone[Files]
//[Files]-这是定义安装程序安装文件到用户系统中的可选文件区段
Source: "bin\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
//注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”[Icons]
//[Icons]-定义所有创建在开始菜单和/或其它位置(比如桌面)的快捷方式
//没有菜单分组
Name: "{autoprograms}\{cm:CmAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename:"{app}\{#MyAppIcon}"
Name: "{autodesktop}\{cm:CmAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon; IconFilename:"{app}\{#MyAppIcon}"[Code]
//[Code]-指定 Pascal 脚本的可选区段
//准备安装,测试MsgBox提示框内容翻译
function InitializeSetup(): Boolean;
begin MsgBox(ExpandConstant('{cm:CmMessage,{cm:CmAppName}}'), mbError, MB_OK); result:=true;
end;//在实际安装开始之前用 CurStep=ssInstall 调用,
//或在实际安装完成之后用 CurStep=ssPostInstall 调用,
//或在安装程序终止之前和安装完成之后用 CurStep=ssDone 调用。
procedure CurStepChanged(CurStep: TSetupStep);
var
languageName: string;
begin//软件安装后执行if CurStep=ssPostInstall then begin//获取用户选择的语言,对应Languages字段的NamelanguageName := ActiveLanguage(); //if 'zh' = languageName then//begin// SetIniString('Setting','Language','zh',ExpandConstant('{app}/config.ini'));//end//else if 'en' = languageName then//begin// SetIniString('Setting','Language','en',ExpandConstant('{app}/config.ini'));//end;//可以分别处理,或者直接写入配置文件(生成的配置文件,默认的卸载过程是不会删除的)//写ini函数原型:参数分别对应字段、key、Value、配置文件//function SetIniString(const Section, Key, Value, Filename: String): Boolean;SetIniString('Setting','Language',languageName,ExpandConstant('{app}/config.ini'));end;
end;
Inno Setup选择语言并写入配置文件、翻译提示信息相关推荐
- Inno Setup中文语言包下载
1 官网 inno Setup是一款免费的安装包制作工具,首先下载安装inno Setup http://www.jrsoftware.org/isinfo.php 软件及中文包下载界面 这里的中文包 ...
- Inno Setup 系列之操作ini文件
需求 应用是多语言的,由ini文件控制具体是哪一类语言.安装程序也是多语言的,在选定安装包语言之后需要同步更新ini文件里面的语言值 ini文件如下: [General] language=en In ...
- inno setup 中文乱码问题_Inno Setup添加中文安装语言文件
如果你不添加中文安装语言文件,你编译生成的安装包的语言是不会有中文. 一,打开软件安装目录下的Languages文件夹下,有如下好多文件,可是就是没有Chianese.isl. 好了,你只需要随便拷贝 ...
- Inno SetUp中文繁体语言包和在脚本中使用
Inno SetUp下载下来是有没中文繁体语言包,一种方法实要从官网中下载别人使用英文自己翻译好的中文语言包,另一种是我已经整理好了,将下面的翻译好的,复制粘贴,保存成.isl文件,放到Inno Se ...
- Inno Setup 介绍
Inno Setup 详解中文资料 其一:使用教程 一.Inno Setup 是什么? InnoSetup 是一个免费的 Windows 安装程序制作软件.第一次发表是在 1997 年,Inno Se ...
- Windows下使用Inno Setup 制作exe安装包
原文地址:点击打开链接 Inno Setup 详解中文资料 其一:使用教程 一.Inno Setup 是什么? InnoSetup 是一个免费的 Windows 安装程序制作软件.第一次发表是在 19 ...
- Inno Setup 打包脚本笔记
Inno Setup 打包脚本总结 1.1. 脚本段 1.1.1. #define宏定义常量 1.1.2. [Setup] 1.1.3. AppId 1.1.3.1. ShowLanguageDial ...
- 打包工具 Inno Setup 介绍
Inno Setup 详解中文资料 其一:使用教程 一.Inno Setup 是什么? InnoSetup 是一个免费的 Windows 安装程序制作软件.第一次发表是在 1997 年,Inno Se ...
- Inno Setup 是什么?
1.Inno Setup 是什么? Inno Setup 是一个免费的 Windows 安装程序制作软件.第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞争力可能已经超 ...
最新文章
- usb for android,libusb
- 阿里达摩院悬壶,看医疗AI如何济世
- mysql按照datetime精确查询_MySQL datetime字段查询按小时:分钟排序
- 开源作品ThinkJDBC—一行代码搞定数据库操作
- ftp协议是一种用于_______的协议_网工知识角|快速理解FTP和TFTP的区别,实用收藏...
- .NET连接ORACLE数据库的方法
- 【联盟】三星大容量MLC FLASH 换代信息(小心现在自己计划的产品哦)
- vmware网络模式设置(说的最简单的一篇文章)
- layui 实现图片上传和预览
- SAP Commerce Cloud(原Hybris) impex 里的美元(dollar $)符号
- 小丑马戏团风格英文404网页模板
- php动态网页技术难点及分析,动态网页技术PHP关于cookie和session的分析
- linux没有图形界面opcv,关于Linux/ubuntu的环境下安装OpenCV并配置Clion【全套攻略】及关于'Opencv'file not found 的问题...
- 分享一份非常强势的Android面试题
- 父与子的python之旅_《父与子的编程之旅:与小卡特一起学Python》作者:Warren Sande - kindle电子书下载 - 我的书库...
- 联通专线切换成移动专线问题故障解决
- .Net Core 简单的Hangfire部署Demo
- flask中flash(闪现)的使用
- PHP根据字符串拼音首字母进行排序/PHP通讯录按字母A-Z排序
- LTspice基础教程-010.波形查看器的使用