应用中心
应用发布指引

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

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

一、添加应用宿主机

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

1.2、点击“宿主机管理”,然后点击里面的“添加宿主机”;

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

1.4、选择网络类型;

(1)门户与宿主机之间的网络互通:门户可以访问到宿主机,宿主机可以访问到门户,适用于行云管家私有部署版的大部分场景,延时低,建议私有部署版选择此项;

(2)只有宿主机能够访问到门户:只有宿主机能够访问到门户,但门户无法直接访问到宿主机,适用于行云管家SaaS平台等网络不通的场景,建议SaaS用户选择此项;

1.5、设置基本信息,为您导入的工具宿主机设置一个名称 ;

1.6、在创建宿主机对话框中,输入宿主机IP,输入工具宿主机Administrator的密码(默认密码是W8ig@digLm),即可完成添加宿主机 ;

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

二、发布新的工具

2.1、点击“宿主机管理”;

2.2、点击“发布新的工具”;

2.3、填写“基本信息”;

请“工具名称”、选择或自行上传“应用图标”、填写工具“版本”号、填写工具的“路径”、填写工具的“描述”;

注意:“路径”这里您需要登录到宿主机中,自行完成新工具的安装,并记录下工具的安装路径(绝对路径),如下图路径是C:\Program Files\PremiumSoft\Navicat\navicat.exe。

2.4、填写“参数代填”;

在这里您可以通过JSON脚本定义此工具能够接收的输入项,以及参数代填行为,以此来实现远程数据库工具后该工具自动代填数据库信息。具体填写方式请参考参数代填指引

2.5、创建完成如图,您可以编辑、预览、删除该工具信息;

三、创建应用

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

3.2、“基本信息”:我们这里以通过发布的工具“谷歌浏览器”为例来创建一个应用“百度网”为例,在创建应用框中,填写“应用名称”、选择对应的“宿主机”、选择“工具”、选择应用的“图标”、选择访问应用时是否加载“团队网盘”、选择是否强制“审计录像”;

3.3、“参数代填”:填下网站的URL,例如www.baidu.com,参数代填请参考chrome代填指引以及参数代填指引

3.4、在URL的“高级”这里,我们还可以通过黑名单白名单设置远程会话应用后只允许访问哪些网站或不允许访问哪些网站;

3.5、“公开性”:在这里我们选择应用要授权的角色、部门以及用户,点击“立即创建”即可创建应用;

3.6、返回至应用中心界面,即可查看到创建的应用。此时,点击“百度网”的“Web桌面”即可打开该应用;

四、如何填写Chrome代填参数

我们以通过应用中心的Chrome浏览器登录阿里云控制台为例,介绍一下Chrome应用的代填方法:

4.1、新建应用

创建一个工具为“Chrome浏览器”的应用,并配置好应用的基本信息:

4.2、增加代填节点

请切换至“参数代填”标签页,并根据您实际的WEB应用填入URL以及添加代填参数对应的代填节点,“文本代填”节点中的填写内容会在此以明文展示,“密码代填”节点中的填写内容会以密文展示;

例如登录“阿里云控制台”需要输入“登录账号”和“密码”;因此我们在此界面需添加一个文本代填节点和一个密码代填节点:

4.3、判断代填元素是否属于iframe

请用您的本地浏览器打开需要代填的URL,我们以阿里云管理控制台为例,点击鼠标右键后,点击“检查”:

选择“Console”标签页,并点击“top”,确认代填参数所在模块是否位于iframe内,如下图所示,可以看出登录用户名与密码模块位于一个iframe中;若您的代填参数不在iframe中请直接查看: 设置代填节点

选择“Elements”标签页,找到代填模块所在的节点,并点击鼠标右键,选择“Copy”,然后选择“Copy selector”:

回到应用中心参数代填界面,勾选“iframe”checkbox,并将刚才拷贝的内容复制进“iframe”的输入框中:

4.4、设置代填节点

(1)在您本地的Chrome浏览器上访问目标应用的网站,我们还是以登录阿里云控制台为例,鼠标选中“账号输入框”,点击鼠标右键后,点击“检查”:

(2)在控制台中对选中的检查点,点击鼠标右键,选择“Copy”,然后选择“Copy selector”:

(3)然后在“设置代填参数”界面,将拷贝的节点信息粘贴至“代填节点”的输入框,并在“代填内容”输入框中填写真实的代填内容,密码输入代填节点同理:

4.5、参数代填效果

通过应用中心的Chrome浏览器访问阿里云控制台,代填效果如下:

五、参数代填JSON脚本

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

(为了方便使用,这里为您准备了Navicat12连接MySQL、MSSQLServer和Oracle的参数代填JSON脚本)

5.1、使用场景举例

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

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

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

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

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

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

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

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

5.2、什么是参数代填

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

5.3、参数代填JSON脚本

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

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

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

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

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

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

a) 参数描述;

b) 操作描述;

c) 清理描述;

5.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"
      ]
    }
  ]
}

样例说明:

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

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

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

5.5、JSON脚本样例下载

为了方便使用,这里为您准备了Navicat12连接MySQL、MSSQLServer和Oracle的参数代填JSON脚本样例,该样例适应于 Navicat 12.1.17(64-bit)-Premium 版本,请【下载】。

六、应用中心常见问题处理

如果您在应用中心使用中遇到问题,您可以查看应用中心FAQ指引