Power Automate for Desktop (PAD) 实现自定义模块

科技资讯 投稿 48900 0 评论

Power Automate for Desktop (PAD) 实现自定义模块

概述

PAD 目前仅支持Windows 11和 Windows 10系统安装使用。

https://docs.microsoft.com/zh-cn/learn/paths/pad-get-started/,PAD 默认自带了几十个模块(module),数以百计的功能(action),可以满足不同用户在不同场景下的需求。值得注意的是,使用 PAD 并不需要计算机本科毕业,只要你具备一定的业务知识,以及基本的逻辑思维即可。

声明

由于PAD这个产品还在不断地发展中,目前官方并没有公开的文档对自定义模块开发进行描述。这几篇文章所基于的经验是技术社区摸索和交流所得,不代表官方意见和任何承诺。

基本概念

本文演示环境是在 Windows 10 中文版,通过 单独下载安装PAD 的环境。

你可以拖动这些操作(action)到中间的设计器区域,用来设计你的流程。每个功能,都有一定的设置界面,用来帮助你设定输入和输出参数,例如

  1. 控制台 (Console)

  2. 设计器 (Designer)

  3. 模块 (Module)

  4. 操作 (Action)

  5. 流(Flow)

本文所提到的自定义PAD模块,就是开发符合业务需要的 (包括一个或多个),用来在里面提供给用户使用,它们可以和内置的模块和操作一起来构成你的

准备开发环境

我们将采用 和  语言,根据 PAD 所提供的  (软件开发工具包)进行开发。 请按照如下的提示准备开发环境。

Visual Studio 2022 社区版

https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030&passive=false 下载安装。

安装Visual Studio 必要的组件

检查  这个工具是否安装正确

创建并编辑项目

启动Visual Studio 2022后,请选择如下的模板来创建项目

无法保存流程,会产生错误。所以请一定要用  的类库。

PAD 在在加载自定义模块时尝试以这个  的值作为模块的标识符(id),作为规范之一,它规定这个标识符不能包含标点符号。

最后,修改代码如下

using Microsoft.Flow.RPA.Desktop.Modules.SDK;
using Microsoft.Flow.RPA.Desktop.Modules.SDK.Attributes;
using Microsoft.Flow.RPA.Desktop.Modules.SDK.Extended.Attributes;
using System;

namespace Xizhang.Modules.Helloworld.Actions
{
    [Action(Id = "Hello"]
    [Icon(Code = "EEE7"]
    public class HelloAction : ActionBase
    {
        [InputArgument]
        public string Name { get; set; }

        [OutputArgument]
        public string Result { get; set; }
        public override void Execute(ActionContext context
        {

            Result = String.Format("Hello,{0}", Name;
        }
    }
}

这个代码很简洁,我们让  继承  类,然后实现了它的  方法。在这个操作(action)中,我们定义了一个输入参数和一个输出参数。另外还用到了几个  来自操作进行描述,例如它的id,和Icon。

准备签名证书

PAD 规定所有的自定义模块源代码必须要进行数字签名,以确保不被滥用。正常情况下,你需要拥有一个真正合法的证书(每年要花一定的银子续费),但在开发测试阶段,或者小范围使用的话,你可以利用自签名证书来实现。

$cert = New-SelfSignedCertificate -Subject Xizhang.PAD.Actions.Cert -Type CodeSigningCert

然后将这个证书导出私钥

$cert | Export-PfxCertificate `
  -Password (ConvertTo-SecureString -AsPlainText -Force "password" `
  -FilePath Xizhang.PAD.Actions.Cert.pfx

对项目进行签名

"C:\Program Files (x86\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe" sign /tr http://timestamp.digicert.com /f c:/users/chenxizhang/Xizhang.PAD.Actions.Cert.pfx /p password $(AssemblyName.dll

按下  对解决方案进行生成,然后到生成目录中去找到对应的程序集

部署到PAD的自定义模块目录

接下来我们看看把这个程序集部署到自定义模块目录中去,这个过程也很简单,首先复制如下的文件(包括主程序集文件,以及它的依赖程序集)

请注意,此时最好把PAD完全关闭。

验证功能

为自定义组件实现多语言支持

回到Visual Studio 项目属性界面中来,请点击下图中央位置的链接创建资源文件。

那么,到底用什么来表示模块对象呢?其实就是刚才我们提到的在  文件中定义的  这个信息,还记得吗?
操作的名称,就是它的类名称。例如本例中的 。操作的输入输出参数名称,需要以  来定义,例如本例中的  这个输入参数,我们在定义资源文件时就用  来表示它。

"C:\Program Files (x86\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe" sign /tr http://timestamp.digicert.com /f c:/users/chenxizhang/Xizhang.PAD.Actions.Cert.pfx /p password $(AssemblyName.dll

"C:\Program Files (x86\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe" sign /tr http://timestamp.digicert.com /f c:/users/chenxizhang/Xizhang.PAD.Actions.Cert.pfx /p password "zh-Hans/$(AssemblyName.resources.dll"

你可以同样的方式确认一下这个新的资源文件程序集也同样被签名了

⚠️ 请注意,经测试发现,有时候直接替换程序集,可能因为PAD有缓存的原因(也可以是一个bug),看不到效果。需要等一段时间,或者干脆把custom-modules目录的内容复制出来,清空一下,然后开一下PAD,这样可以刷新一下缓存,然后把内容复制回来,再开PAD就可以了。

多语言高级技巧

添加操作的汇总信息

这个也不难,我们需要在资源文件中添加一个特殊的键值:,例如本例为,另外值得注意的是,在这个文字中,可以引用输入输出参数名,以便显示更加相关的信息。引用的方式是, 但要求参数名全部大写,例如本例为 或 。

为代码中的文本做多语言处理

总结

本文随附代码,请通过 https://github.com/chenxizhang/pad-custom-module-quickstart 进行访问,可以自行克隆在本地编译,按照步骤在你的电脑上面安装和部署。

编程笔记 » Power Automate for Desktop (PAD) 实现自定义模块

赞同 (133) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽