# 配置文件
提示
- 配置文件支持.xlsx、.csv、.xml、.json格式; 在开发阶段系统查找的数据文件格式顺序是: .xlsx、.csv、.xml、.json, 在发行阶段系统查找的数据文件格式顺序是: .json、.xml、.csv、xlsx。你可以使用你习惯的配置文件, 也可以多种格式的配置文件并存。
- 建议开发阶段采用.csv的配置文件(读取.xlsx较慢, 可用任意文件名的.xlsx设计完成后, 转存为.csv文件; 发行阶段统一采用.json的配置文件, 删除其他格式的配置文件。
- 在配置文件的公式里或Ligg Shell里使用配置文件路径, 可以不写后缀(建议), 如果写后缀的话就会精确查找该格式的配置文件。
- 配置数据类型分为Entity/Table; 如果以.xlsx、.csv作为配置文件, 表达Entity/Table格式的数据, 样式有所不同; 表达Entity的2列多行, 表头必须是FieldName&FiledValue, 示例见GlobalSetting; 表达Table的多列多行, 示例见Languages。
- 使用.xlsx、.csv格式作为配置文件, 对于文件路径的反斜杠要写为\\。
- 使用.csv、.xml、.json格式的作为配置文件, 建议都保存为Utf-8格式, 否则容易导致汉字乱码;
- 配置文件分为Global级别和Application级别, 框架下可以容纳多个Application, 如IT运维工具箱(code: OrpTk)、IT开发工具箱(code: DevTk)、企业网盘(code: EntDrv)等, 各Application的配置放在相应的App-x下, 见整体介绍-运行目录。
# Global级别配置文件
# GlobalSetting
path: \Conf\GlobalSetting.*, Entity格式, 必须存在
namespace Ligg.EasyRPADesk
{
public class GlobalSetting
{
public string DefaultCulture { get; set; }
public string HelpdeskEmail { get; set; }
public string PhythonExePath { get; set; }
}
}
.xls、.csv配置文件的样式:
FieldName | FieldValue |
---|---|
DefaultCulture | en-US |
HelpdeskEmail | LiggHelpdesk@outlook.com |
PhythonExePath | C:\\Python38\\Python.exe |
示例:
字段 | DefaultCulture | HelpdeskEmail | PhythonExePath |
---|---|---|---|
示例1 | en-US | LiggHelpdesk@outlook.com | C:\Python38\Python.exe |
示例2 | zh-CN | LiggHelpdesk@outlook.com | \Python.exe |
示例3 | zh-CN |
示例说明:
DefaultCulture: 不可为空; 程序默认的起始Culture; 必需遵循标准, 否则程序启动时会报错。在配置文件\Conf\Apps\App-x\ApplicationSetting.中有对应的设置, 如为空则取此处的值。
HelpdeskEmail: 不可为空; 作用: 程序运行出错,弹出错误提示时,提醒用户给该帐号发邮件; 如空, 则没有发邮件的提示。在配置文件\Conf\Apps\App-x\ApplicationSetting. 中有对应的设置, 如为空则取此处的值。
PhythonExePath: 可为空; 支持绝对和相对路径, 如果是相对路径, 则父路径为@rootDir\Lib。在配置文件\Conf\Apps\App-x\ApplicationSetting.*中有对应的设置, 如为空则取此处的值。如都为空, 执行RunPython时会有出错提示。
如果使用.xlsx、.csv格式, 对于文件路径的反斜杠要写为\\
相对路径的第一个反斜杠可省略
# Languages
path: \Conf\Language\Languages.*, Table格式; 如不需要支持多语言, 无需此配置文件; 如需要支持多语言, 必需此配置文件, 如无, 系统启动时报错。
.xls、.csv配置文件的样式:
CultureName | LanguageCode | LanguageName | ImageUrl |
---|---|---|---|
en-US | en | English | \\Images\\us.png |
zh-CN | miao | Miao(苗语) | Images\cn.png |
zh-CN | szh | 简体中文 | Images\\cn.png |
zh-CN | czh | 繁体中文 | Images\\cn.png |
zh-HK | czh | 繁体中文 | Images\\cn.png |
de-DE | de | Deutsch | Images\\de.png |
示例说明:
CultureName: 不可为空; 为空, 则启动程序时报错; 必需遵循标准, 否则程序启动时会报错。详见附录-CultureName列表, 教程-Winform-多语言支持
LanguageCode: 不可为空; 为空, 则程序启动时报错。
LanguageName: 不可为空; 为空, 则界面语言切换栏文字显示空白。
ImageUrl: 不可为空; 为空, 则界面语言切换栏图片显示空白; 只支持相对路径, 父路径: @rootDir\Conf\Cultures\images\。
上述示例可同时存在, 前提是CultureName+LanguageCode不重复
使用.xlsx、.csv格式, 对于文件路径的反斜杠要写为\\
相对路径的第一个反斜杠可省略
注意
- 系统UI上输出数值、日期格式按当前Culture显示。代码如下:
var singleOutputStr = 3.14f.ToString();
var timeOutputStr = new DateTime(2021, 10, 27).ToShortDateString();
- 配置文件里输入的文本转数值或时间时,没有考虑Culture, 请按en-US的标准书写。代码如下:
var singleInput= Convert.ToSingle(inputStr, CultureInfo.InvariantCulture);
var timeInput = Convert.ToDateTime(inputStr, CultureInfo.InvariantCulture);
# App级别配置文件
# ApplicationSetting
path: \Conf\Apps\App-x\ApplicationSetting.*, Entity格式, 必须存在
namespace Ligg.EasyRPADesk
{
public class ApplicationSetting
{
//可为empty, 如果empty, 从GlobalSetting获取
public string PhythonExecPath { get; set; }
//可为empty, 如果empty, 从GlobalSetting获取
public string HelpdeskEmail { get; set; }
//不能为null
public bool SupportMultiLanguages { get; set; }
//起始Culture
//如果为empty, 则从配置文件\Conf\Language\Languages* 的CultureName获取
//如果SupportMultiLanguages为true,
//必须与则从配置文件\Conf\Language\Languages* 的CultureName保持一致
public string DefaultCulture { get; set; }
//起始LanguageCode, 不能为empty, 否则系统启动报错
//如SupportMultiLanguages为true,
//必须与则从配置文件\Conf\Language\Languages* 的LangugeCode保持一致
//如SupportMultiLanguages为false
//必须与AbbrevAnnexes/ApplicationAnnexes等配置文件的LanguageCode保持一致
public string DefaultLanguage { get; set; }
//Application界面语言切换栏显示的语言列表
//示例: zh-CN:en, zh-CN:szh, en-US:en
//格式: 以':' ','相隔; ':' 2侧不能有空格
//必须与则从配置文件\Conf\Language\Languages* 保持一致
//如SupportMultiLanguages为false, 此配置无效
public string IncludedLanguages { get; set; }
//可为empty, 不能为empty, 否则会导致AutoUpgrade功能出错
public string ApplicationVersion { get; set; }
//不能为null
public bool HasCblpComponent { get; set; }
//支持绝对路径和相对路径
//如果是相对路径, 父路径是 @rootDir\\Cblps\\App-x
public string CblpDllPath { get; set; }
//可为empty, 如果empty, 获取 @appDataDir 失败
//支持绝对路径和相对路径
//如果是相对路径, 父路径是 @rootDir\\Data\\App-x
public string ApplicationDataDir { get; set; }
//可为empty, 如果empty, 获取 @appLibDir 失败
//支持绝对路径和相对路径
//如果是相对路径, 父路径是 @rootLibDir\\Lib\\App-x
public string ApplicationLibDir { get; set; }
//可为empty, 如果empty, 缺省是最后一个硬盘的\\tmp\\%appCode%
//只支持绝对路径
public string ApplicationTempDir { get; set; }
//不能为null, 如果为true,
//如果启始参数里不带startPassword,则程序启动时弹出密码验证界面,显式验证,
//如果启始参数里带有Password, 首先隐式验证,通过验证, 程序继续; 否则开始显式验证
//启始Form下的StartPolicy配置文件你也有对应配置, 优先级此处为高,
//即 ApplicationSetting.VerifyPasswordAtStart=
//ApplicationSetting.VerifyPasswordAtStart||FormStartPolicy.VerifyPasswordAtStart
public bool VerifyPasswordAtStart { get; set; }
//Ldict 格式,例如
//Params:HappyCoding
//上例表示 显式验证时, 输入HappyCoding, 可通过验证
//上例表示 隐式验证时, 起始参数的startPassword需要写HappyCoding, 才可通过验证
public string PasswordVerificationRule { get; set; }
//不能为null, 如果为true, 则程序启动时登录验证对话框, 通过验证, 程序继续
//启始Form下也有对应配置, 优先级此处为高,
//即 ApplicationSetting.LogonAtStart=
//ApplicationSetting.LogonAtStart||StartForm.LogonAtStart
//对Winform, 登录界面的UI配置路径: %appZonesDir%\.Logon\
//对Console, 登录界面的UI配置路径: %appScenariosDir%\.Logon\
public bool LogonAtStart { get; set; }
}
}
说明:
- PasswordVerificationRule 的数据格式为Ldict, 详见 数据格式-Ldict, 具体示例详见 教程-Winform-专题-起始密码 教程-Console-专题-起始密码
- 起始参数也包含起始语言, 起始语言的优先级是: 语言起始参数>ApplicationSetting的起始语言配置 , 详见 教程-Console-多语言支持 教程-Winform-多语言支持
# 多语言文本配置文件
- path: \Conf\Apps\App-x\ApplicationAnnexes.*, 可无; 是本应用的名称、描述、备注等属性的多语言配置文件
- path: \Conf\Apps\App-x\SharedAnnexes.*, Table格式, 可无; 应用内共用的语言配置文件, 常用于未定义文本的公共UI元素的后绑定文本。
注意
- 如果不需要多语言支持, SharedAnnexes, 但是需要规范一些句子的输出, 也可使用SharedAnnexes。
- 虽然不需要多语言支持, 但在应用里要调用本Application的一些名称、描述、备注等, 可以使用ApplicationAnnexes。
SharedAnnexes 示例:
字段 | MasterName | DisplayName | Description | Remark | LangugageCode |
---|---|---|---|---|---|
示例1 | This function is under developing... | 本功能正在开发当中... | szh | ||
示例1 | This function is under developing... | 本功能正在開發當中… | czh | ||
示例1 | This function is under developing... | Diese Funktion entwickelt sich... | de | ||
示例2 | Connecting server failed... | 服務器連接失敗… | szh | ||
示例2 | Connecting server failed... | 架構 | czh | ||
示例2 | Connecting server failed... | Verbindung des Servers fehlgeschlagen... | de |
ApplicationAnnexes 示例:
字段 | DisplayName | Description | Remark | Remark1 | Remark2 | LangugageCode |
---|---|---|---|---|---|---|
示例1 | IT运维工具箱 | IT服务管理和运维自动化系统 | 运维中心 | ITSMAOA | 打造高效、精准、可测量的IT服务和运维管理 | szh |
示例1 | IT Operation Tookit | IT Service Management And Operation Automation System | Operation Center | ITSMAOA | Build easy, precise, metrizable IT service and operation | en |
说明:
ApplicationAnnexes并不需要MasterName字段, 系统会自动加上去。
在配置文件的公式里可以这样调用PhraseAnnexes的当前语言的文本:
- 缺省是DisplayName, 可以省略
- =GetSharedAnnexText; This function is under developing...
- 不省略的写法
- =GetSharedAnnexText; This function is under developing...; DispayName
- =GetSharedAnnexText; This function is under developing...; Discription
- 缺省是DisplayName, 可以省略
在配置文件的公式里可以这样调用ApplicationAnnexes 的当前语言的文本:
- 缺省是DisplayName, 可以省略
- =GetApplicationAnnexText
- 不省略的写法
- =GetApplicationAnnexText; DispayName
- =GetApplicationAnnexText; Remark2
- 缺省是DisplayName, 可以省略
# UI配置文件
- 每个Application可以有多个Console的应用窗口, 每个应用窗口就是一个Scenario, 比如IT运维工具箱(OrpTk)有2个Scenario: RunShell、RunPython; 他们的UI配置文件就分别放到
- \Conf\Apps\OrpTk\UI\Console\Scenarios\Basic\RunShell
- \Conf\Apps\OrpTk\UI\Console\Scenarios\Basic\RunPython
- 每个Application可以有多个Winform的启动Form, 比如OrpTk有4个 不同类型的Form分别是: 管理员主界面(Function Form)、用户主界面(Function Form)、巡检工具Svi界面(Single View Interface, Svi Form)、备份作业工具Szi界面(Single Zone Interface, SziForm), 他们的UI配置目录就分别放到
- \Conf\Apps\OrpTk\UI\Functions\Admin
- \Conf\Apps\OrpTk\UI\Functions\User
- \Conf\Apps\OrpTk\UI\Views\Insp
- \Conf\Apps\OrpTk\UI\Zones\Common\BakWorker
- 注意Function Form的路径是单层的
- UI配置详见教程相关内容。