RPA用PAD(Power Automate Desktop)コンポーネントの開発

RPA用PAD(Power Automate Desktop)コンポーネントの開発

扉がある限り、世界はあっただろう、そして今は扉があった。

最后更新 2022/05/30 21:24
蓝创精英团队
预计阅读 6 分钟
分类
.NET
标签
.NET C# RPA

本文由网友蓝创精英团队投稿,欢迎转载、分享

オリジナル:Blue Creation Elite Team

原文へのリンク:https//www.example.com


実際、PADには現在の公式文書には外部コンポーネントやプラグイン開発インターフェイスはありません。

しかし、RPAの分野では、“潘淳”や“潘総兄”など、志を同じくする友人もいます。

ドアがある限り、世界があります。ドアがあります。ここではドアがあります。結局、. NET Frameworkなので、研究や学習がはるかに簡単になります。

コンポーネントの開発環境

デフォルトのコンポーネントの場所は、現在のアプリケーションの下のこのディレクトリです。

C:\Program Files (x86)\Power Automate Desktop\custom-modules

自分の住所に従って申請します。

さらに、プラグインDLLにはDLLコード署名が必要です。

デフォルトでは、システムの信頼できるルート認証局に個人署名を使用します。

お金があれば、コード署名を購入できます。

現時点では、私の側には他の良い方法がありませんが、署名は大きく2つに分かれています。1つはドメイン名証明書SSLとコード署名で、それらは同じではなく、混在することはできません。

概要は以下の通り。

最も単純なデモ。

開発プロセスに直接従い、最後にまとめます。

新規ブランクソリューション

新しいソリューション(空のソリューション)を追加する

新規コンポーネントライブラリ

コンポーネントDLL名は次の規則を満たす必要があります。

"?*.Modules.?*.dll",
"Modules.?*.dll"

公式のパッケージはこんな感じです。

Microsoft.Flow.RPA.Desktop.Modules.System.Actions.dll

だから、私は公式の基準に従っている。

就叫 YZG.Modules.HelloWorld.Actions注:需要注意的是,像 demo,test 等名字,可能会导致识别不出来的问题,所以,建议起一些特殊的名字。

プロジェクトにこんにちは。

プログラムは挨拶から始まります。

参照開発DLLパッケージ

然后,引用安装目录 C:\Program Files (x86)\Power Automate Desktop

以下のパッケージです。

Microsoft.Flow.RPA.Desktop.Modules.SDK.dll
 Microsoft.Flow.RPA.Desktop.Modules.SDK.Extended.dll

もちろん、プロセスを使用する場合は、必要なパッケージのヒントを使用することもできます。

導入後の効果は以下の通り。

挨拶ロジックの追加。

以下は論理コードです。

[Action(Id = "SayHello")]
[Icon(Code = "EFF7")]
[Throws("MyError")]
public class SayHello : ActionBase
{
    [InputArgument]
    public string UserName { get; set; }

    [OutputArgument]
    public string Result { get; set; }
    public override void Execute(ActionContext context)
    {
        try
        {
            this.Result = $"{UserName} 你好,中国欢迎你! -{DateTime.Now}";
        }
        catch (ActionException ex)
        {
            throw new ActionException("MyError", ex.Message, ex.InnerException);
        }
    }
}

国際化支援の拡大

外国語を追加する必要はなく、中国語のサポートを直接追加するだけです。

まず、中国语のリソースファイルを追加します

アセンブリ表示の大まかな規則

コンポーネントの名前の由来は?

アセンブリ情報のAssemblyTitleから来ており、名前はデフォルトで英語ですが、中国語でも使用できます。

この名前はコンポーネントActionの名前と一致しない方が良いです。そうすればディスプレイが簡単になります

コンポーネントコンテンツの表示の大まかな規則

通过对 组件名 或者 类型 以及 类属性 分割。

増加する。

  1. _FriendlyName
  2. _Description
  3. _Summary

其中 FriendlyName 就是各种组件的主名称,Description就是提示语相当于,Summary就是关键信息,作用还是很明显的,内部使用了模板引擎变量 < 属性名大写 >来动态显示一些信息。

一般的な例は次のとおりです。

Close_Connection_Description = "新 SQL 连接的句柄"
Close_Connection_FriendlyName = "SQL 连接"
Close_Description = "关闭与数据库的开放连接"
Close_FriendlyName = "关闭 SQL 连接"
Close_Summary = "关闭 SQL 连接 <CONNECTION>"
ConnectAndExecute_Description = "连接到数据库并执行 SQL 语句"
ConnectAndExecute_Summary = "<if(RESULT)>\r\n执行 SQL 语句 <STATEMENT> 并将查询结果存储到 <RESULT> 中<else>\r\n执行 SQL 语句 <STATEMENT><endif>"
Connect_ConnectionString_Description = "用于连接到数据库的连接字符串"
Connect_ConnectionString_FriendlyName = "连接字符串"
Connect_Connection_Description = "新 SQL 连接的句柄"
Connect_Connection_FriendlyName = "SQL 连接"
Connect_Description = "打开与数据库的新连接"
Connect_FriendlyName = "打开 SQL 连接"
Connect_Summary = "<if(CONNECTION)>\r\n打开 SQL 连接 <CONNECTIONSTRING> 并将其存储到 <CONNECTION> 中<else>\r\n打开 SQL 连接 <CONNECTIONSTRING><endif>"
Database_Description = "连接到数据库并执行 SQL 语句"
Database_FriendlyName = "数据库"
ErrorMessage_CannotConnect = "无法连接到数据源"
ErrorMessage_CannotConnectError = "无法连接到数据源 {0}"
ErrorMessage_InvalidConnectionString = "连接字符串无效"
ErrorMessage_StatementError = "SQL 语句中的错误 {0}"
ErrorMessage_UniniatializedConnection = "SQL 连接未初始化。请仔细检查是否已指定正确的 SQL 连接,且该连接在“打开 SQL 连接”之后(而不是在已关闭该连接之后)使用"
Error_ConnectToDataSourceError_Description = "指示连接到数据源时出现问题"
Error_ConnectToDataSourceError_FriendlyName = "无法连接到数据源"
Error_InvalidConnectionStringError_Description = "指示指定的连接字符串无效"
Error_InvalidConnectionStringError_FriendlyName = "连接字符串无效"
Error_SqlStatementError_Description = "指示给定的 SQL 语句中存在错误"
Error_SqlStatementError_FriendlyName = "SQL 语句中的错误"
ExecuteSqlStatement_ConnectionString_Description = "用于连接到数据库的连接字符串"
ExecuteSqlStatement_ConnectionString_FriendlyName = "连接字符串"
ExecuteSqlStatement_Connection_Description = "新 SQL 连接的句柄"
ExecuteSqlStatement_Connection_FriendlyName = "SQL 连接"
ExecuteSqlStatement_Description = "连接到数据库并执行 SQL 语句"
ExecuteSqlStatement_FriendlyName = "执行 SQL 语句"
ExecuteSqlStatement_GetConnection_Description = "指定是从给定连接字符串创建新连接,还是选择已打开的连接"
ExecuteSqlStatement_GetConnection_FriendlyName = "获取连接的方式"
ExecuteSqlStatement_Result_Description = "来自数据库的结果,采用数据表的形式,包含行和列"
ExecuteSqlStatement_Result_FriendlyName = "查询结果"
ExecuteSqlStatement_Statement_Description = "要对数据库执行的 SQL 语句"
ExecuteSqlStatement_Statement_FriendlyName = "SQL 语句"
ExecuteSqlStatement_Timeout_Description = "等待来自数据库的结果的最长时间"
ExecuteSqlStatement_Timeout_FriendlyName = "超时"
Execute_Description = "连接到数据库并执行 SQL 语句"
Execute_Summary = "<if(RESULT)>\r\n对 <CONNECTION> 执行 SQL 语句 <STATEMENT> 并将查询结果存储到 <RESULT> 中<else>\r\n对 <CONNECTION> 执行 SQL 语句 <STATEMENT><endif>"
GetSQLConnectionBy_ConnectionString_FriendlyName = "连接字符串"
GetSQLConnectionBy_SQLConnectionVariable_FriendlyName = "SQL 连接变量"
Message_SqlConnection = "SQL 连接"
SqlConnectionHandle_FriendlyName = "SQL 连接"
SqlConnectionHandle_FriendlyNamePlural = "SQL 连接"

上記の情報を参考にして、挨拶プログラムに中国語コンテンツを入力します。

中国語の実際の内容

こちら側で追加しました。

コンポーネントプロジェクトの署名の追加

お金は自分のコード署名証明書に従事し、お金はない、私の暫定的な自己証明書に従って最初に来る。

仮証明書の作成

新しいシグネチャを作成します(VSは管理者モードを使用する場合は、管理者として起動します)。

署名されたPfxファイルを作成します。

コンポーネントDLLに署名する

この場合、VSがインストールされている限り、このツール(signtool.exe)で署名します。

もちろん、私も提供します。

一个签名的 bat 脚本(默认签名密码为 123456

署名に必要なのはこれら2つのアセンブリだけで、他の参照nugetライブラリは必要ありません。

主要是YZG.Modules.HelloWorld.Actions.dllzh-Hans\YZG.Modules.HelloWorld.Actions.resources.dll放到签名的地方

batをダブルクリックして署名する

署名は成功した。また、DLL上で右クリックすると、署名情報が表示されます。

ターゲットマシンに証明書をインストールする

証明書を購入した場合は、当然インストールする必要はありません。直接承認されます。それ以外の場合は、証明書をインストールします。

証明書のインストールは非常に簡単で、ダブルクリックしてパスワードを入力し、指定した場所を選択します。

直接次のステップ

次のステップ

信頼できるルート局の选択

そして、完了、インポートするかどうか、はい、OK、OK。

输入 CMD 命令( certmgr.msc ) 就可以看到指定分组下就有你的证书了。

これで証明書がインストールされます。

コンポーネントの配備

アプリケーションサービスが終了する場合、

そうでなければ、DLLは占有される。

次に,署名した項目をインストールディレクトリ下の指定プラグインディレクトリに置くと,おおよそ次のようになる.

また、私はCディスクであり、** 許可の問題があります。他のディスクにインストールするのが最善です。

次に、PADアプリケーションを実行し、新しいタスクフローを作成するか、タスクフローを編集します。

次の問題が発生した場合、証明書がターゲットマシンにインストールされていません。

通常、PADのデザインビューを開くと、次のようになります。

機能テストケースが追加されました->挨拶して機能を追加しました。

試してみましょう

保存後は以下の通り。

最後に、実際の動きを見ることができ、非常に効果的です。

問題の処理

  • まず、中国語の問題が表示されない場合は、中国語言語パックを追加することをお勧めします。名前はコードと一致する必要があります。
  • 第二に、ロードが失敗し、エラーが表示され、エラープロンプトに従って修正するか、欠落した参照パッケージを追加することができます。
  • 第三に、より多くの詳細は、より多くを掘り下げて試すことができる。

拡張アセンブリのパラメータ情報

私の側では、ネチズン(潘淳)の要約と私自身の要約に基づいて、また、そのような文書を出力します。

ActionBaseに必要な関連パラメータ

関連する組み込み型

また、マスターの要約に感謝します。

仕上げました

これを書くのは本当に簡単ではありません。特にPADは、コンポーネントを識別するときには、さまざまな問題があります。

何度も何度も何度も試してみましょう

幸いにも、私はこの拡張機能に基づいてSqliteコンポーネントを書きました。サンプルもお送りします。長老たちのために。

引用する。

https://github.com/kesshei/PADDemo

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2026/04/22

バージョン別の. NETサポート状況(250 7 0 7更新)

仮想マシンとテストマシンを使用して、各バージョンのオペレーティングシステムの. NETサポートをテストします。オペレーティングシステムのインストール後、対応するランタイムを測定し、スターダストエージェントをパスとして実行できます。

继续阅读