# 配置文件

提示

  • 配置文件支持.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; }
        
    }
}

说明


# 多语言文本配置文件

  • 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
  • 在配置文件的公式里可以这样调用ApplicationAnnexes 的当前语言的文本:

    • 缺省是DisplayName, 可以省略
      • =GetApplicationAnnexText
    • 不省略的写法
      • =GetApplicationAnnexText; DispayName
      • =GetApplicationAnnexText; Remark2

# 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配置详见教程相关内容