应用中心行云管家应用中心发布自定义工具指引
行云管家应用中心发布自定义工具指引

通过行云管家应用中心,可以管理您的工具宿主机以及工具应用,并且可以根据实际需要,发布自定义工具。

一、添加应用宿主机
1、进入应用中心

登录行云管家后,点击主菜单中的“应用中心”菜单,即可进入应用中心界面。

应用中心界面如下:

2、添加应用宿主机

1、在应用中心界面中点击“宿主机管理”,弹出宿主机管理框

2、在宿主机管理框中,点击“添加宿主机”按钮,弹出创建宿主机对话框

3、在创建宿主机对话框中,输入宿主机IP,点击创建按钮,即可添加宿主机

4、添加宿主机后,返回宿主机管理框中,可以看到添加的宿主机,其状态为“运行中”,并可查看到预置的默认工具

二、发布工具
1、安装工具

准备好工具安装包文件,并将安装包文件拷贝至工具宿主机进行安装,安装完毕后,记录工具应用启动文件的全路径(绝对路径)。

以安装一个Navicat为例,安装后,其启动文件的绝对路径为:C:\Program Files\PremiumSoft\Navicat\navicat.exe ,获得并记录这个路径。

2、发布工具

1、参考前述“添加应用宿主机”一节描述,打开工具宿主机管理框

2、在工具宿主机管理框中,点击“发布新的工具”,弹出发布新的工具向导

3、在发布新的工具向导中点击“下一步”,进入下一向导页

4、以发布一个Navicat工具为例,指定工具名称为“Navicat”、图标为您需要的工具图标、版本为“12”、路径为Navicat安装后启动文件的绝对路径“C:\Program Files\PremiumSoft\Navicat\navicat.exe”、描述为“数据库客户端工具”,参数为一段描述在行云管家中打开Navicat时如何进行参数代填的JSON脚本(参考“参数代填JSON脚本”一节)。注意:如果在打开工具时不需要进行参数代填,则“参数”框可以不填写任何内容。

5、填写完各项参数后,点击“创建”,即可发布自定义工具

6、工具发布成功后,在宿主机管理框中可以查看到您发布的工具

3、创建应用

1、返回至应用中心界面,点击“创建应用”,将弹出创建应用对话框

2、在创建应用对话框中,进入“基本信息”页签,设置应用名称、选择宿主机、选择工具为上述发布的Navicat、填入要访问的数据库的相关信息(包括:用户名、密码、host-即数据库IP地址、port-即数据库端口号)、输入描述信息、指定访问应用时是否允许加载团队网盘

3、在创建应用对话框中,进入“公开性”页签,选择应用要授权的角色,点击“立即创建”即可创建应用

4、返回至应用中心界面,即可查看到创建的应用

5、此时,点击“Web桌面”即可打开应用

三、参数代填JSON脚本

我们以数据库客户端工具Navicat为例,来进行参数代填JSON脚本说明。

1、使用场景举例

首先,我们来看一下Navicat工具是如何连接到数据库服务端的。

打开的Navicat的界面如下:(不同版本的Navicat其界面会有不同,这里以Navicat 12 for MySQL 为例):

在Navicat工具中,如果我们要连接到一个MySQL数据库,我们的操作过程如下:

1、在Navicat主界面中,点击“文件”菜单,然后将鼠标移动到弹出菜单中的“新建连接”菜单项之上,再将鼠标移动到弹出的子菜单中的“MySQL...”菜单项之上,并点击“MySQL...”菜单项,将会弹出MySQL新建连接对话框

2、在MySQL新建连接对话框中,我们需要输入“连接名”、“主机”(IP地址或主机名)、“端口”、“用户名”及“密码”这几项信息,然后点击“确定”按钮,即可连接到MySQL数据库

总结上述Navicat连接到MySQL数据库的过程,我们会发现,有两部分信息需要处理:

1、通过点击特定的菜单项,打开“MySQL新建连接对话框”;

2、在“MySQL新建连接对话框”中,要输入MySQL的IP地址等特定的信息,以连接到MySQL;

2、什么是参数代填

那么,所谓参数代填,指的是这样一个场景:在行云管家将这个Navicat作为一个工具发布后,我们在使用发布的Navicat来连接指定的数据时, 行云管家可以自动点击Navicat的特定菜单项来打开“新建连接对话框”,并将您事先给出的“主机”、“端口”、“用户名”及“密码”这几项信息填入到“MySQL新建连接对话框”中的特定位置,然后自动点击“确定”按钮,连接至MySQL数据库。

3、参数代填JSON脚本

简而言之,我们的JSON脚本是用来描述上述参数代填过程所需的各项信息的,它最少包括两部分,即:

1、操作描述:描述点击菜单项打开“新建连接对话框”,然后向“新建连接对话框”中相应位置填入“主机”、“端口”等各项内容,再点击“确定”按钮的过程;

2、参数描述:填写“新建连接对话框”所需的各项信息,包括“主机”、“端口”、“用户名”及“密码”等;

在行云管家中发布的工具,往往会授权予多人,换而言之,行云管家中发布的工具会同时被多人使用,这样一来,就存在数据安全的问题,即是说用户A使用工具后留下的数据为了安全而不应该被用户B看到。那么,如果用户A使用工具之后,将其使用工具所留下的数据从文件系统中清理掉,则用户B在使用工具时就无法看到用户A所留下的数据,从而保证数据安全。

为了数据安全,通常JSON脚本中还包括第三部分:清理描述,这部分内容用于描述“关闭工具后,需要对操作(文件)系统做哪些清理操作”。

总结一下,参数代填JSON脚本主要包括三部分:

1、参数描述;

2、操作描述;

3、清理描述;

4、参数代填JSON脚本样例

一个Navicat工具参数代填JSON脚本样例如下:

{   "meta_comment" : "meta是用来定义参数和自动代填变量信息的属性,是一个数组,如果没有任何变量,请定义一个空数组",
  "meta" : [
    {
      "name" : "userName",
      "label" : "用户名",
      "type" : "text"
    },
    {
      "name" : "password",
      "label" : "密码",
      "type" : "password"
    },
    {
      "name" : "host",
      "label" : "host",
      "type" : "text"
    },
    {
      "name" : "port",
      "label" : "port",
      "type" : "text"
    }
  ],
  "autoFillInfo": {
    "title": "^Navicat",
    "timeout": 10,
    "maximize": false,
    "action": [
      {
        "desc": "点击开始菜单",
        "target": {
          "desc": "标签为ActionMainMenuBar的控件,在相对位置(0,0)上点击",
          "text": "ActionMainMenuBar"
        },
        "event": "mouse",
        "param": [
          [
            10,
            10
          ],
          "left"
        ],
        "wait": 0.5
      },
      {
        "desc": "移动到子菜单上",
        "target": {
          "desc": "类型为TThemedPopupMenu的控件",
          "class": "TThemedPopupMenu"
        },
        "event": "mouse",
        "param": [
          [
            10,
            10
          ],
          ""
        ],
        "wait": 1
      },
      {
        "desc": "点击打开菜单",
        "target": {
          "desc": "类型为TThemedPopupMenu的控件",
          "class": "TThemedPopupMenu"
        },
        "event": "mouse",
        "param": [
          [
            10,
            10
          ],
          "left"
        ],
        "wait": 1
      },
      {
        "desc": "隐藏输入法,此步骤可能失败,但是失败后仍然继续",
        "target": {
          "desc": "类型为NativeHWNDHost的控件",
          "class": "NativeHWNDHost",
          "seq":0
        },
        "event": "hide",
        "param": [true],
        "wait": 1,
        "continue":true
      },
      {
        "desc": "输入连接名",
        "target": {
          "desc": "最后一个Edit控件",
          "class": "TEdit",
          "seq": -1
        },
        "event": "message",
        "param": [
          "WM_SETTEXT",
          "${_timestamp}"
        ],
        "wait": 1,
        "focus": true
      },
      {
        "desc": "输入host",
        "target": {
          "desc": "第一个Edit控件(从0开始)",
          "class": "TEdit",
          "seq": 0
        },
        "event": "message",
        "param": [
          "WM_SETTEXT",
          "${host}"
        ],
        "wait": 1
      },
      {
        "desc": "输入port",
        "target": {
          "desc": "第四个Edit控件(从0开始)",
          "class": "TEdit",
          "seq": 3
        },
        "event": "message",
        "param": [
          "WM_SETTEXT",
          "${port}"
        ],
        "wait": 1
      },
      {
        "desc": "输入用户名",
        "target": {
          "desc": "第三个Edit控件(从0开始)",
          "class": "TEdit",
          "seq": 2
        },
        "event": "message",
        "param": [
          "WM_SETTEXT",
          "${userName}"
        ],
        "wait": 1
      },
      {
        "desc": "输入密码",
        "target": {
          "desc": "第二个Edit控件(从0开始)",
          "class": "TEdit",
          "seq": 1
        },
        "event": "keyboard",
        "param": [
          [
            10,
            10
          ],
          "${password}"
        ],
        "wait": 1
      },
      {
        "desc": "点击ok按钮",
        "target": {
          "desc": "第二个Tbutton控件(从0开始)",
          "class": "TButton",
          "seq": 2
        },
        "event": "mouse",
        "param": [
          [
            10,
            10
          ],
          "left"
        ],
        "wait": 1
      }
    ]
  },
  "postRun": [
    {
      "action": "fileclean",
      "params": [
        "%USERPROFILE%\\Documents\\Navicat"
      ]
    },
    {
      "action": "regclean",
      "params": [
        "HKEY_CURRENT_USER\\Software\\PremiumSoft\\Navicat\\Servers"
      ]
    },
    {
      "action": "command",
      "params": [
        "echo",
        "test"
      ]
    }
  ]
}

样例说明:

1、上述样例中红色字体部分即为“参数描述”部分。其描述了代填的参数有四个,分别为:“用户名”、“密码”、“host”和“port”。这四个参数将会出现在“创建应用”对话框中(参考前述“创建应用”一节)。

2、上述样例中蓝色字体部分即为“操作描述”部分。其描述了进行代填操作时点击菜单项打开“新建连接对话框”,然后向“新建连接对话框”中相应位置填入“主机”、“端口”等各项内容,再点击“确定”按钮的过程。

3、上述样例中紫色字体部分即为“清理描述”部分。其描述了关闭Navicat工具后,需要对操作(文件)系统做哪些清理操作。