news 2026/7/7 3:26:45

Mineradio-Tauri 项目打包问题排查与解决总结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mineradio-Tauri 项目打包问题排查与解决总结

目录

一、初始问题:cargo metadata 命令未找到

二、NSIS 下载权限错误(PermissionDenied)

三、签名私钥缺失错误

方案 A:禁用更新签名(推荐,如不需要自动更新)

方案 B:生成密钥并设置环境变量

四、构建时 sidecar 文件权限错误(持续出现)

五、最终构建结果

六、后续:安装后无法启动(待进一步排查)

七、关键经验总结


安装体验:

https://llzai.lanzoum.com/iJ37g3ur6nte
密码:1y52

本文档记录了从bun run devbun run build过程中遇到的一系列问题及最终解决方案,供后续参考。


Mineradio-Tauri: 原作者:https://github.com/zzstar101/Mineradio-Tauri

一、初始问题:cargo metadata命令未找到

现象执行bun run dev时,Tauri 报错:

failed to run 'cargo metadata' command ... program not found

原因系统未安装 Rust 工具链,或cargo未添加到环境变量。

解决方案

  • 安装 Rust(使用rustupwinget install Rustlang.Rustup)。

  • 重新打开终端,验证cargo --version正常输出。

  • (Windows)安装 Visual Studio 生成工具,勾选“使用 C++ 的桌面开发”。


二、NSIS 下载权限错误(PermissionDenied

现象构建过程中尝试下载nsis-3.11.zip时被拒绝访问:

Failed to open file: Os { code: 5, kind: PermissionDenied, message: "拒绝访问。" }

解决方案

  • 以管理员身份运行终端。

  • 清理 Tauri 缓存(%APPDATA%\tauri下的nsis相关文件)。

  • 或手动安装 NSIS 并设置TAURI_NSIS_PATH环境变量。


三、签名私钥缺失错误

现象构建时提示:

A public key has been found, but no private key. Make sure to set TAURI_SIGNING_PRIVATE_KEY environment variable.

原因tauri.conf.json中配置了updaterpubkey,但未提供对应私钥。

解决方案(二选一)

方案 A:禁用更新签名(推荐,如不需要自动更新)

tauri.conf.json中:

  • "createUpdaterArtifacts"设为false

  • 删除整个"plugins""updater"对象

方案 B:生成密钥并设置环境变量

  1. 安装tauri-cli(实际命令为cargo tauri

  2. 生成密钥对:cargo tauri signer generate -w myapp.key

  3. 将公钥内容填入tauri.conf.jsonpubkey字段

  4. 设置环境变量TAURI_SIGNING_PRIVATE_KEY(值为私钥文件完整内容)

  5. 重新构建

更新:

安装后生成密钥

cargo tauri signer generate -w ~/.tauri/myapp.key

密码:12345678

输入两次

私钥:cmd

set TAURI_SIGNING_PRIVATE_KEY=dW50cnVzdGVkIGNvbW1lbnQ6IHJzaWduIGVuY3J5cHRlZCBzZWNyZXQga2V5ClJXUlRZMEl5ZWQrNWhIS2huMDYyU1VscjlRU0VrYUVDaVpXTDQ3Y3lEMEYyT004YXhoMEFBQkFBQUFBQUFBQUFBQUlBQUFBQW83VG1UYU53bTRHYnJMR3lOTUt3YWppSFNnV0QzT3dhL2NqOUVlWm1MNzRHUFV6Wjg0RWdHWENxeE9ZSnhjZUtyR21lWEhDOHlIbm9WQ285c0hEZUE4bkJtUjNzVGVYNHltWFFveFNYNEhwOGp1cXhML2VqSlJ5ay9OY1I3QktjcXBQMllVMncyTUE9Cg==

pub公钥:

dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEZGMUY3QzM2QzYxNzEzRTQKUldUa0V4ZkdObndmLzZTVmF6dlRpTkJTT3JHSHp3dDNqTDVOQ1F5S1ZyeWxxYVJvWVI3QTkya3oK

D:\ChangZhi\Mineradio-Tauri-main\apps\desktop\src-tauri\tauri.conf.json

{ "$schema": "https://schema.tauri.app/config/2", "productName": "MineRadio-Tauri", "version": "0.1.0", "identifier": "com.mineradio.fork.tauri", "build": { "beforeDevCommand": "bun run --filter @mineradio/web dev", "devUrl": "http://127.0.0.1:5173", "beforeBuildCommand": "bun run --filter @mineradio/web build && bun run --filter @mineradio/desktop build:sidecar", "frontendDist": "../../web/dist" }, "app": { "windows": [ { "label": "main", "title": "MineRadio-Tauri", "width": 1280, "height": 720, "minWidth": 960, "minHeight": 540, "decorations": false, "transparent": true, "shadow": false } ], "security": { "csp": "default-src 'self'; script-src 'self' 'wasm-unsafe-eval' https://cdn.jsdelivr.net/npm/@xenova/transformers@2.17.2 https://cdn.jsdelivr.net/npm/@xenova/transformers@2.17.2/; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: http://127.0.0.1:* http://*.music.126.net https://*.music.126.net http://y.qq.com https://y.qq.com http://*.y.qq.com https://*.y.qq.com http://*.gtimg.cn https://*.gtimg.cn http://*.qlogo.cn https://*.qlogo.cn; media-src 'self' blob: http://127.0.0.1:*; connect-src 'self' http://127.0.0.1:* http://ipc.localhost https://cdn.jsdelivr.net/npm/@xenova/transformers@2.17.2/ https://huggingface.co/Xenova/depth-anything-small-hf/ https://huggingface.co/api/resolve-cache/models/Xenova/depth-anything-small-hf/ https://us.aws.cdn.hf.co/xet-bridge-us/65b10f1dc9a5a7680fa72994/; worker-src 'self' blob:; object-src 'none'; base-uri 'none'; frame-ancestors 'none'", "devCsp": "default-src 'self' http://127.0.0.1:5173; script-src 'self' http://127.0.0.1:5173 'unsafe-eval' 'wasm-unsafe-eval' https://cdn.jsdelivr.net/npm/@xenova/transformers@2.17.2 https://cdn.jsdelivr.net/npm/@xenova/transformers@2.17.2/; style-src 'self' http://127.0.0.1:5173 'unsafe-inline'; img-src 'self' data: blob: http://127.0.0.1:* http://*.music.126.net https://*.music.126.net http://y.qq.com https://y.qq.com http://*.y.qq.com https://*.y.qq.com http://*.gtimg.cn https://*.gtimg.cn http://*.qlogo.cn https://*.qlogo.cn; media-src 'self' blob: http://127.0.0.1:*; connect-src 'self' http://127.0.0.1:* http://ipc.localhost ws://127.0.0.1:5173 https://cdn.jsdelivr.net/npm/@xenova/transformers@2.17.2/ https://huggingface.co/Xenova/depth-anything-small-hf/ https://huggingface.co/api/resolve-cache/models/Xenova/depth-anything-small-hf/ https://us.aws.cdn.hf.co/xet-bridge-us/65b10f1dc9a5a7680fa72994/; worker-src 'self' blob:; object-src 'none'; base-uri 'none'; frame-ancestors 'none'" } }, "bundle": { "active": true, "createUpdaterArtifacts": false, "targets": [ "nsis" ], "category": "Music", "externalBin": [ "binaries/mineradio-sidecar-api" ], "resources": [ "../../../LICENSE", "../../../THIRD_PARTY_NOTICES.md", "../../../PRIVACY.md", "../../../SECURITY.md" ], "icon": [ "icons/icon.ico" ], "shortDescription": "MineRadio-Tauri desktop music player", "longDescription": "A GPL-3.0 Tauri desktop music player.", "windows": { "allowDowngrades": false, "webviewInstallMode": { "type": "downloadBootstrapper", "silent": true }, "nsis": { "installMode": "currentUser", "installerIcon": "icons/icon.ico", "uninstallerIcon": "icons/icon.ico", "startMenuFolder": "MineRadio-Tauri", "languages": [ "SimpChinese", "English" ], "displayLanguageSelector": false } } }, "plugins": { "updater": { "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEZGMUY3QzM2QzYxNzEzRTQKUldUa0V4ZkdObndmLzZTVmF6dlRpTkJTT3JHSHp3dDNqTDVOQ1F5S1ZyeWxxYVJvWVI3QTkya3oK" } } }

四、构建时 sidecar 文件权限错误(持续出现)

现象构建在tauri-build阶段崩溃,错误指向binaries\mineradio-sidecar-api-x86_64-pc-windows-msvc.exe

called `Result::unwrap()` on an `Err` value: Os { code: 5, kind: PermissionDenied, message: "拒绝访问。" }

原因该 sidecar 二进制文件被其他进程占用,或当前用户无访问权限。

最终解决方案(多步组合)

  1. 以管理员身份运行终端(最重要) 关闭当前终端,右键选择“以管理员身份运行”,重新执行bun run build

  2. 将项目目录添加到 Windows Defender 排除列表Windows 安全中心 → 病毒和威胁防护 → 管理设置 → 排除项 → 添加文件夹D:\ChangZhi\Mineradio-Tauri-main

  3. 清理构建缓存

    cd apps\desktop\src-tauri cargo clean cd ..\..\..
  4. 重启电脑(释放所有文件锁) 重启后以管理员身份再次构建。

  5. 检查 sidecar 文件权限确保binaries\mineradio-sidecar-api-x86_64-pc-windows-msvc.exe的属性→安全中,当前用户有“完全控制”权限。


五、最终构建结果

在完成上述所有步骤后,执行bun run build成功生成安装包:

Finished 1 bundle at: D:\ChangZhi\Mineradio-Tauri-main\apps\desktop\src-tauri\target\release\bundle\nsis\MineRadio-Tauri_0.1.0_x64-setup.exe └─ Done in 108.69 s

无任何Error输出,退出码为 0。


六、后续:安装后无法启动(待进一步排查)

虽然打包成功,但安装setup.exe后应用无法正常启动。可能原因及排查方向:

  • sidecar 未被正确复制到安装目录检查安装目录下的binaries/resources/中是否存在mineradio-sidecar-api.exe

  • 前端资源未被正确打包检查resources/app/下是否有index.html等文件。

  • CSP 策略在生产环境中过于严格通过开启窗口的devtools功能(在tauri.conf.jsonwindows中添加"devtools": true)并重新打包,按F12查看控制台错误。

  • 运行时依赖缺失如 Visual C++ Redistributable 未安装。

  • Rust 端 panic使用命令行启动 exe,观察控制台输出。

建议后续操作

  1. tauri.conf.json中启用devtools,重新打包安装,查看前端错误。

  2. 确保 sidecar 二进制文件在安装目录中存在且可独立运行。

  3. 检查 Windows 事件日志中的异常信息。


七、关键经验总结

  1. Windows 权限问题是最常见障碍,始终优先尝试以管理员身份运行关闭杀毒软件/添加排除

  2. Tauri 的更新签名在开发/测试阶段可安全禁用,简化构建流程。

  3. sidecar 文件需在构建前确保存在且未被占用,可借助cargo clean和重启释放句柄。

  4. 每次修改tauri.conf.json或依赖后,建议清理缓存再构建,避免遗留问题。


文档创建日期:2026-07-06

项目路径D:\ChangZhi\Mineradio-Tauri-main

目标平台:Windows x64

构建工具:Bun + Tauri CLI (Rust)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 3:24:26

2026年最难就业季,给唐山家长的一个启示

前几天刷到一条新闻:2026年全国高校毕业生人数再创新高,超过1200万。评论区里最扎心的一条是:"四年大学读完,简历投了200份,面试机会只有3个。"这条评论让我想了很久——不是为现在的大学生焦虑,…

作者头像 李华
网站建设 2026/7/7 3:23:04

智能体上线后效果打折?问题可能出在这四个环节

一句话回答:智能体POC阶段跑得很顺,正式上线后效果却不达预期,这是2026年企业智能体落地中最常见的困境。根因通常不在模型本身,而在于四个环节:知识库更新滞后、业务流程集成不完整、用户反馈闭环缺失、以及上线后的持…

作者头像 李华
网站建设 2026/7/7 3:22:05

墨见AI+Cursor构建2026独立APP开发工作流

1. 项目概述:这不是一个“用AI写APP”的噱头,而是一套可落地的独立开发工作流2026年做独立APP开发,最大的认知陷阱,就是把“AI编程”当成点几下鼠标就能出成品的魔法棒。我从去年底开始系统性地用墨见AI和Cursor重构自己的APP开发…

作者头像 李华
网站建设 2026/7/7 3:20:32

恒生电子×牛客AI面试:每轮省300小时,评估标准反而更统一了

作为国内金融科技领域的代表企业,恒生电子长期吸引大量计算机相关专业人才加入。近年来,随着AI技术快速进入企业经营场景,恒生电子不仅将AI深度应用于招聘流程,也开始重新定义未来的人才标准。 目前,恒生电子通过牛客A…

作者头像 李华
网站建设 2026/7/7 3:19:56

表面等离子体共振:蛋白亲和力定量检测干货

一、技术概述SPR 全称表面等离子体共振(Surface Plasmon Resonance),是目前生物医药领域通用的分子互作鉴定技术,无需荧光标记、可实时动态监测两种分子结合与解离全过程,实现亲和力、结合速率、解离速率的精准定量计算…

作者头像 李华
网站建设 2026/7/7 3:19:18

pymoo多目标优化框架架构深度解析与高级应用实践

pymoo多目标优化框架架构深度解析与高级应用实践 【免费下载链接】pymoo NSGA2, NSGA3, R-NSGA3, MOEAD, Genetic Algorithms (GA), Differential Evolution (DE), CMAES, PSO 项目地址: https://gitcode.com/gh_mirrors/py/pymoo 在复杂工程系统设计与决策支持领域&…

作者头像 李华