C# 电报机器人:如何进行自我更新?
我有一个电报帐户,并创建了电报机器人在远程机器上执行一些操作。 它工作正常。 我修复了机器人中的一些代码,想更新所有计算机上的所有机器人吗C# 电报机器人:如何进行自我更新?,c#,.net,telegram-bot,C#,.net,Telegram Bot,我有一个电报帐户,并创建了电报机器人在远程机器上执行一些操作。 它工作正常。 我修复了机器人中的一些代码,想更新所有计算机上的所有机器人吗 也就是说,bot理解命令“/update”,但如何将新的.exe从我的计算机传递给所有bot并进行自我更新?您需要cmd的外部脚本,该脚本将在获得“/update”命令后由bot运行。此脚本应首先停止bot并替换.exe文件,然后运行新的.exe文件。您需要cmd的外部脚本,该脚本将在获得“/update”命令后由bot运行。此脚本应首先停止您的bot并替换
也就是说,bot理解命令“/update”,但如何将新的.exe从我的计算机传递给所有bot并进行自我更新?您需要cmd的外部脚本,该脚本将在获得“/update”命令后由bot运行。此脚本应首先停止bot并替换.exe文件,然后运行新的.exe文件。您需要cmd的外部脚本,该脚本将在获得“/update”命令后由bot运行。此脚本应首先停止您的bot并替换.exe文件,然后运行新的.exe文件。我还编写了一个具有自我更新机制的bot 要更新bot,我只需要通过电报发送新的.exe,但任何其他方法都可以 基本上,我是这样做的:
- 使用文件id调用
,以获取路径getFile
- 使用不同的可执行文件启动新进程。在我的例子中,我还传递了文件下载的URL
- 退出旧进程
- 新进程将替换旧的可执行文件并(重新)启动bot
- 在退出流程之前,我会告诉scm服务已停止
- 更新后,我通过scm再次启动服务,而不是使用CreateProcess
如果您从桌面运行该程序,那么UAC可能是一个问题:如果以管理员身份运行,您就可以了。已启动的进程继承管理员访问权限。如果不是以管理员身份运行。。。您的bot运行的用户需要对可执行文件进行写访问。我还编写了一个具有自我更新机制的bot 要更新bot,我只需要通过电报发送新的.exe,但任何其他方法都可以 基本上,我是这样做的:
- 使用文件id调用
,以获取路径getFile
- 使用不同的可执行文件启动新进程。在我的例子中,我还传递了文件下载的URL
- 退出旧进程
- 新进程将替换旧的可执行文件并(重新)启动bot
- 在退出流程之前,我会告诉scm服务已停止
- 更新后,我通过scm再次启动服务,而不是使用CreateProcess
如果您从桌面运行该程序,那么UAC可能是一个问题:如果以管理员身份运行,您就可以了。已启动的进程继承管理员访问权限。如果不是以管理员身份运行。。。运行bot的用户需要对可执行文件进行写访问。ok,thnx。如果远程计算机上的UAC需要管理员权限怎么办?如果机器人是windows服务呢?好的,thnx。如果远程计算机上的UAC需要管理员权限怎么办?如果bot是windows服务怎么办?