当前位置: 首页 > news >正文

tauri项目绕开plugin-shell直接调用可执行文件并携带任意参数

tauri项目的plugin-shell插件的要求太多了,用起来实在是不顺手,要求参数要求位置等,不行不行,客户要求可以在前端输入任意命令行参数并执行,哪怕是rm -rf都要无条件执行,好好好,满足你。

我们直接绕开 plugin-shell 插件,不使用它了,直接使用系统内置的功能,还能减小包体积呢,真是一举两得

use std::process::Command;

然后写一个command提供给前端调用,传入一个字符串参数即可:

#[tauri::command]
pub fn run_command(command: String) -> Result<String, String> {let output = if cfg!(target_os = "windows") {Command::new("cmd").args(&["/C", &command]).output().unwrap()} else {Command::new("sh").arg("-c").arg(&command).output().unwrap()};if output.status.success() {Ok(String::from_utf8_lossy(&output.stdout).to_string())} else {Err(String::from_utf8_lossy(&output.stderr).to_string())}
}

这里唯一要做的就是要在前端找到可执行文件的绝对路径位置,然后把参数拼好,再执行就可以了,这里我先写了一个绝对路径,测试也是没问题的,所以你要先自己通过程序拿到可执行文件的绝对路径,然后就可以了

// run help
const runHelp = async () => {const command = await invoke('run_command', {command: '/Users/song/Project/my/TauriMan/src-tauri/bin/fnm --version',})console.log('run_command------', command)
}

执行结果:

http://www.lqws.cn/news/99451.html

相关文章:

  • OpenCV C++ 学习笔记(五):颜色空间转换、数值类型转换、图像混合、图像缩放
  • redis数据过期策略
  • 垂起固定翼无人机应用及技术分析
  • [特殊字符] Unity UI 性能优化终极指南 — ScrollRect篇
  • 如何提高工作效率
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(31):そう
  • 第十三章 Java基础-特殊处理
  • 【鸿蒙】HarmonyOS NEXT之如何正常加载地图组件
  • HTTP连接管理——短连接,长连接,HTTP 流水线
  • 常见的七种排序算法 ——直接插入排序
  • Vue-ref 与 props
  • 数据的评估与清洗篇---评估数据
  • TSN 中的 CBS(Credit-Based Shaper)功能详解
  • 低谷才是出成绩
  • C#对象扩展方法:提升对象操作的灵活性与效率
  • 【Web应用】若依框架:基础篇13 源码阅读-前端代码分析
  • 物联网数据归档方案选择分析
  • 24.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--认证微服务
  • 华为盘古 Ultra MoE 模型:国产 AI 的技术突破与行业影响
  • 更新已打包好的 Spring Boot JAR 文件中的 class 文件
  • Vue.js教学第十八章:Vue 与后端交互(二):Axios 拦截器与高级应用
  • 从汇编的角度揭秘C++引用,豁然开朗
  • 硬件工程师笔记——555定时器应用Multisim电路仿真实验汇总
  • CRM管理软件的数据可视化功能使用技巧:让数据驱动决策
  • SpringBoot 之 JWT
  • 8.RV1126-OPENCV 视频中添加LOGO
  • Web后端快速入门(Maven)
  • OSCP备战-BSides-Vancouver-2018-Workshop靶机详细步骤
  • Vert.x学习笔记-Verticle原理解析
  • Java数据校验:确保数据完整性和正确性