tauri 外部二进制嵌入

众所周知,大部分前端开发在做桌面应用开发时,都会感觉力不从心

所以很多时候都会采用调用第三方程序的方式来扩展自己的程序。

相对来说 tauri 将这种嵌入第三方可执行程序称之为 sidecar 相当于摩托车旁边的边斗。

1. 第一步准备一个可执行程序

这里我们直接试用 GO 生成一个简单 demo, 新建一个 test.go 文件,输入如下代码之后

package main

import (
	"fmt"
	"os"
)

// main 是程序的入口点
func main() {
	// 检查命令行参数的数量
	if len(os.Args) < 2 {
		fmt.Println("请提供一个字符串参数")
		os.Exit(1)
	}

	// 从命令行参数中获取用户输入的字符串
	inputString := os.Args[1]

	// 处理字符串(这里简单地返回一个问候语)
	response := "你好,你输入的字符串是:" + inputString

	// 输出响应
	fmt.Println(response)
}

运行 go build -o test.exe test.go 就得到了一个将输入字符返回的可执行程序了

2. 配置 tauri sidecar

1. 复制 test.exe 到 bin 目录,并重命名为 test-x86_64-pc-windows-msvc.exe

src-tauri 目录下新建 bin 目录,并将 test.exe 重命名为 test-x86_64-pc-windows-msvc.exe

特别需要注意这里的文件命名

windows 下需要以 -x86_64-pc-windows-msvc.exe 结尾。

Linux 下需要以 -aarch64-unknown-linux-gnu 结尾

具体命名可以参考 bundle配置

2. 配置 tauri.conf.json
{
    // ... 省略
    "tauri": {
    "allowlist": {
      // ... 省略
      "shell": {
        "sidecar": true,
        "scope": [
          {
            // 这里的名字就是目录 + 执行程序的开始名称
            "name": "bin/test",
            "sidecar": true,
            // 这里配置执行exe 的参数和校验
            "args": [{ "validator": "\\S+" }]
          }
        ],
        "all": true,
        "execute": true,
        "open": true
      }
    },
    // ... 省略
    "bundle": {
      // ... 省略
      // 这里的名字就是目录 + 执行程序的开始名称
      "externalBin": ["bin/test"]
    }
  }
}

需要注意这里的参数要和我们调用时一致,不然就会出现传参了但是获取不到参数的情况

3. js 调用
let result = ref(null)
import { Command } from '@tauri-apps/api/shell'
try {
  // 第一个参数就是可执行程序的名称,填入 bundle 中配置的名称就行
  // 第二个参数是可执行程序的参数,和 shell 中配置的 args 对应就行
  const command = Command.sidecar('bin/test', ['fds-fds'])
  const output = await command.execute()
  console.log(output)
  result.value = output.stdout
  console.log(result.value)
} catch (err) {
  console.error(err)
  result.value = err
}

好了,到这里就结束了,运行起来看一下效果吧

可以看到已经正常调用了嵌入的二进制文件了

参考链接: tauri sidecar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值