我在 UiPath 中有一个流程来自动化 PyCharm,这是一个非常简单的流程,就像运行 Python 脚本并将运行消息复制到文本文件中一样。现在我想把它转换成一个二进制文件在windows机器上执行。
我开始知道 UiPath 确实有一个将项目导出为可执行文件的选项,但遗憾的是它也被删除了。
我还查看了 UiPath 的编排器,但这对我来说似乎很有意义。我不明白为什么一家公司会删除如此重要的功能(转换为可执行文件)并提供这样一个混乱的解决方案。可能是我错过了一些东西。
我的问题是……
3 回答
UiPath 不希望用户能够直接运行可执行文件。他们强迫用户使用 Orchestrator。因此,他们始终可以完全控制用户及其许可模式。如果他们仍然提供可执行方式,那么有人可以轻松地使用 UiPath 创建任务并将其发送到任何其他 PC,而无需使用 UiPath 帐户。所以这主要是他们停止提供这种方法的原因。但是您仍然有一些其他选项来运行您的流程,所以不用担心。
这些方法是:
使用编排器。从您的 Orchestrator仪表板运行流程(通过手动作业或时间触发甚至另一个启动触发器)。
使用Orchestrator并使用UiPath Robot(UiPath 安装中已提供)。现在您可以简单地从托盘图标启动它。
使用UiPath Studio并从这里开始流程。
创建一个批处理文件,为您的进程运行启动命令脚本。此行将
UiRobot.exe_Path /file:"Main.xaml"
运行您的进程。创建一个运行 #4 中的批处理文件的Visual Studio 应用程序(exe)。
使用REST API运行该过程。
如您所见,您有几个选项,但不幸的是,exe 解决方法只是批处理文件的包装器。
我建议您使用 Orchestrator,因为它为您提供了很多可能性和对流程的控制以及良好的日志记录。
最简单的方法是在批处理文件中调用UiPath 机器人命令行界面。我建议您先打包该过程,然后使用带有参数的UiPath.exe execute
命令在批处理文件中引用该包。--process {Package_ID}
您可以添加UiPath.exe
到 PATH 环境变量中,这样您就不需要在批处理文件中使用 exe 的绝对路径。批处理文件将能够像可执行文件一样在您的 Windows VM 上运行。或者,您可以在UiPath.exe
快捷方式的属性菜单中添加快捷方式并将参数添加到快捷方式的目标。
我为此目的使用AutoHotkey脚本,并认为我会分享我的方法,
使用下面的代码创建一个*.ahk
脚本,
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
#SingleInstance force
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SetTitleMatchMode,2
DetectHiddenWindows, On
; you don't need to modify below code unless UiPath Studio changes its shortcut name
EnvGet, LocalFolder, LocalAppData ;use windows Env variable to get local appdata folder
UiPath=%LocalFolder%\UiPath
UiPath_ShrtCut=%A_Programs%\UiPath Studio.lnk
UiPath_Prcss:="UiPath.Studio.exe"
UiPath_Asstnt:="UiPath.Assistant.exe"
FileGetShortcut, %UiPath_ShrtCut%, , OutDir ;get parent directory of shortcut.lnk
;modify your_script_path\Main as per your script and its path
Script=""%OutDir%\UiRobot.exe" "-file" "your_script_path\Main.xaml"" ;script folder and script name
; you can add additional clause in here
If (FileExist(UiPath) "D")
{
Process, Exist, %UiPath_Asstnt%
if ErrorLevel = 0
{
Runwait, %UiPath_ShrtCut%
WinWait, ahk_exe %UiPath_Asstnt% ;wait for UiPath.Assistant to load
Sleep, 2500
Runwait, %comspec% /c TASKKILL /im %UiPath_Prcss% /f ,,Hide ;now kill UiPath main window
;Run, %A_AHKPath% %Rec_Script% ;run record
Run, %comspec% /c %Script%,,Hide
}
else
{
;Run, %A_AHKPath% %Rec_Script% ;run record
Run, %comspec% /c %Script%,,Hide
}
}
return
然后根据您所需的触发器创建任务计划,并在操作选项卡中使用以下
程序/脚本:"C:\Program Files\AutoHotkey\AutoHotkey.exe"
添加参数(可选):"Script_path\Script_name.ahk"