打包时因为wix或nsis下载失败或超时而报错
注:该文章仅限于windows系统
原因
国内网关原因,博主clash科学上~网也没用......
解决思路
自己手动下载wix和nsis文件并放到正确的目录里面。打包时检测到相应目录已存在文件就不会再去下载了
注:博主最后会提供一个下载的脚步,也可以通过脚本一键下载
- wix下载地址:github.com/wixtoolset/...
- nsis下载地址:github.com/tauri-apps/...
- nsis_tauri_utils插件下载地址:github.com/tauri-apps/...
这里要特别注意,博主当前下载的是0.5.1的版本。但后续改版本可能会更新,请参考github.com/tauri-apps/... 中所使用的当前版本。如果使用了错误的版本,打包时控制台会出现:
Warn NSIS directory contains mis-hashed files. Redownloading them.

-
nsis-ApplicationID 插件下载地址:github.com/tauri-apps/...
-
在C:\Users[你的用户名]\AppData\Local\中新建tauri目录,并把这些文件放到tauri目录下。tauri目录里面的结构如下 // 注:你的用户名请替换成你自己电脑本地的
如果还是会出现自动下载wix或nsis报错,尝试用以下PowerShell脚本自动下载相信文件并自动放置到合适目录中
PowerShell
# This script is designed to run before building a Tauri application if build with error like:
# Error failed to bundle project: `https://github.com/wixtoolset/wix3/releases/download/wix3141rtm/wix314-binaries.zip: Connection Failed: Connect error:
# Error failed to bundle project: `https://github.com/tauri-apps/nsis-tauri-utils/releases/download/nsis_tauri_utils-v0.5.1/nsis_tauri_utils.dll: Connection Failed: Connect error:
# More info: https://github.com/tauri-apps/tauri/issues/7338
# 1. 删除之前的临时目录和目标目录,保证干净环境
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue temp
$tauriDir = Join-Path $env:USERPROFILE "AppData\Local\tauri"
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue (Join-Path $tauriDir "NSIS")
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue (Join-Path $tauriDir "WixTools314")
# 2. 创建临时目录
if (!(Test-Path temp)) { mkdir temp }
cd temp
# 3. 下载 wix 工具(WixTools314)
Invoke-WebRequest -Uri "https://github.com/wixtoolset/wix3/releases/download/wix3141rtm/wix314-binaries.zip" -OutFile "wix314-binaries.zip"
Expand-Archive ./wix314-binaries.zip -DestinationPath ./WixTools314
# 4. 下载 NSIS
Invoke-WebRequest -Uri "https://github.com/tauri-apps/binary-releases/releases/download/nsis-3/nsis-3.zip" -OutFile "nsis-3.zip"
Expand-Archive ./nsis-3.zip -DestinationPath ./NSIS
# 5. 移动 NSIS 文件夹下的 nsis-3.* 子目录内容到 NSIS 根目录
$nsisSubDir = Get-ChildItem .\NSIS | Where-Object { $_.PSIsContainer -and $_.Name -like 'nsis-3.*' } | Select-Object -First 1
if ($nsisSubDir) {
Move-Item -Path (Join-Path $nsisSubDir.FullName '*') -Destination .\NSIS -Force
Remove-Item $nsisSubDir.FullName -Recurse -Force
}
# 6. 下载 NSIS-ApplicationID 插件并解压
Invoke-WebRequest -Uri "https://github.com/tauri-apps/binary-releases/releases/download/nsis-plugins-v0/NSIS-ApplicationID.zip" -OutFile "NSIS-ApplicationID.zip"
Expand-Archive .\NSIS-ApplicationID.zip -DestinationPath .\NSIS-ApplicationID
# 7. 移动插件文件到 NSIS\Plugins\x86-unicode
$pluginDir = ".\NSIS\Plugins\x86-unicode"
if (!(Test-Path $pluginDir)) { New-Item -ItemType Directory -Path $pluginDir | Out-Null }
if (Test-Path ".\NSIS-ApplicationID\Release") {
Move-Item ".\NSIS-ApplicationID\Release\*" $pluginDir -Force
}
# 8. 下载 nsis_tauri_utils.dll v0.5.1 并重命名覆盖到插件目录
Invoke-WebRequest -Uri "https://github.com/tauri-apps/nsis-tauri-utils/releases/download/nsis_tauri_utils-v0.5.1/nsis_tauri_utils.dll" -OutFile "nsis_tauri_utils.dll"
if (Test-Path "nsis_tauri_utils.dll") {
$additionalPluginDir = Join-Path $pluginDir "additional"
if (!(Test-Path $additionalPluginDir)) { New-Item -ItemType Directory -Path $additionalPluginDir | Out-Null }
Copy-Item "nsis_tauri_utils.dll" (Join-Path $pluginDir "nsis_tauri_utils.dll") -Force
Copy-Item "nsis_tauri_utils.dll" (Join-Path $additionalPluginDir "nsis_tauri_utils.dll") -Force
Remove-Item "nsis_tauri_utils.dll" -Force
}
# 9. 移动 NSIS 和 WixTools314 到用户目录
if (!(Test-Path $tauriDir)) { New-Item -ItemType Directory -Path $tauriDir | Out-Null }
Move-Item .\NSIS (Join-Path $tauriDir "NSIS") -Force -ErrorAction SilentlyContinue
Move-Item .\WixTools314 (Join-Path $tauriDir "WixTools314") -Force -ErrorAction SilentlyContinue
Write-Host "rm temp dir"
# 10. 清理临时文件和目录
Remove-Item .\NSIS-ApplicationID -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item .\nsis-3.zip -Force -ErrorAction SilentlyContinue
Remove-Item .\NSIS-ApplicationID.zip -Force -ErrorAction SilentlyContinue
Remove-Item .\wix314-binaries.zip -Force -ErrorAction SilentlyContinue
cd ..
Remove-Item .\temp -Recurse -Force -ErrorAction SilentlyContinue
Write-Host "done"
脚本里面的 nsis_tauri_utils.dll 用的是 v0.5.1 版本。如果版本已更新请自行在脚本里替换。查看tauri当前最新使用的nsis_tauri_utils版本方法请参考前面 对于不知道怎么运行该脚本的朋友:把该脚本复制到一个txt文本中。然后把文本重命名为 test.ps1 然后打开PowerShell ,进入到 test.ps1所在目录。然后输入:test.ps1 回车