Loading...
Loading...
Guides users through distributing Tauri applications on Windows, including creating MSI and NSIS installers, customizing installer behavior, configuring WebView2 installation modes, and submitting apps to the Microsoft Store.
npx skill4agent add dchuk/claude-code-tauri-skills distributing-tauri-for-windows| Format | Extension | Build Platform | Notes |
|---|---|---|---|
| WiX MSI | | Windows only | Traditional Windows installer |
| NSIS | | Cross-platform | Can build on Linux/macOS |
npm run tauri build
# or
yarn tauri build
# or
pnpm tauri build
# or
cargo tauri build# 64-bit (default)
npm run tauri build -- --target x86_64-pc-windows-msvc
# 32-bit
npm run tauri build -- --target i686-pc-windows-msvc
# ARM64 (requires additional VS build tools)
npm run tauri build -- --target aarch64-pc-windows-msvc# Install NSIS and build tools (Debian/Ubuntu)
sudo apt install nsis lld llvm clang
# Install Windows Rust target
rustup target add x86_64-pc-windows-msvc
# Install cargo-xwin
cargo install --locked cargo-xwin# Install via Homebrew
brew install nsis llvm
# Add LLVM to PATH
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
# Install Windows Rust target
rustup target add x86_64-pc-windows-msvc
# Install cargo-xwin
cargo install --locked cargo-xwinnpm run tauri build -- --runner cargo-xwin --target x86_64-pc-windows-msvc| Mode | Internet Required | Size Impact | Best For |
|---|---|---|---|
| Yes | 0 MB | Default, smallest installer |
| Yes | ~1.8 MB | Better Windows 7 support |
| No | ~127 MB | Offline/air-gapped environments |
| No | ~180 MB | Controlled enterprise deployment |
| No | 0 MB | Not recommended |
{
"bundle": {
"windows": {
"webviewInstallMode": {
"type": "embedBootstrapper" // or: downloadBootstrapper, offlineInstaller, fixedVersion
}
}
}
}fixedVersion"path": "./WebView2Runtime"{
"bundle": {
"windows": {
"wix": {
"template": "./windows/custom-template.wxs"
}
}
}
}src-tauri/windows/fragments/registry.wxs<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<ComponentGroup Id="MyFragmentRegistryEntries">
<Component Id="MyRegistryEntry" Directory="INSTALLDIR">
<RegistryKey Root="HKCU" Key="Software\MyApp">
<RegistryValue Type="string" Name="InstallPath" Value="[INSTALLDIR]" KeyPath="yes"/>
</RegistryKey>
</Component>
</ComponentGroup>
</Fragment>
</Wix>{
"bundle": {
"windows": {
"wix": {
"fragmentPaths": ["./windows/fragments/registry.wxs"],
"componentRefs": ["MyFragmentRegistryEntries"]
}
}
}
}{
"bundle": {
"windows": {
"wix": {
"language": ["en-US", "fr-FR", "de-DE"], // Single: "fr-FR"
"localePath": "./windows/locales" // Optional: custom locale files
}
}
}
}| Mode | Admin Required | Install Location | Use Case |
|---|---|---|---|
| No | | Default, no elevation |
| Yes | | System-wide install |
| Yes | User choice | Flexible deployment |
{
"bundle": {
"windows": {
"nsis": {
"installMode": "perMachine"
}
}
}
}src-tauri/windows/hooks.nsh!macro NSIS_HOOK_PREINSTALL
; Run before file installation
DetailPrint "Preparing installation..."
!macroend
!macro NSIS_HOOK_POSTINSTALL
; Run after installation completes
DetailPrint "Configuring application..."
; Example: Install VC++ Redistributable
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" "Installed"
${If} $0 != "1"
ExecWait '"$INSTDIR\vc_redist.x64.exe" /quiet /norestart'
${EndIf}
!macroend
!macro NSIS_HOOK_PREUNINSTALL
; Run before uninstallation
DetailPrint "Cleaning up..."
!macroend
!macro NSIS_HOOK_POSTUNINSTALL
; Run after uninstallation
DetailPrint "Removal complete"
!macroend{
"bundle": {
"windows": {
"nsis": {
"installerHooks": "./windows/hooks.nsh"
}
}
}
}{
"bundle": {
"windows": {
"nsis": {
"languages": ["English", "French", "German", "Spanish"],
"displayLanguageSelector": true
}
}
}
}{
"bundle": {
"windows": {
"nsis": {
"minimumWebview2Version": "110.0.1531.0"
}
}
}
}{
"bundle": {
"active": true,
"targets": ["msi", "nsis"],
"icon": ["icons/icon.ico"],
"windows": {
"certificateThumbprint": "YOUR_CERTIFICATE_THUMBPRINT",
"timestampUrl": "http://timestamp.digicert.com",
"webviewInstallMode": {
"type": "embedBootstrapper"
},
"wix": {
"language": ["en-US", "de-DE"],
"fragmentPaths": ["./windows/fragments/registry.wxs"],
"componentRefs": ["MyRegistryEntries"]
},
"nsis": {
"installMode": "both",
"installerHooks": "./windows/hooks.nsh",
"languages": ["English", "German"],
"displayLanguageSelector": true,
"minimumWebview2Version": "110.0.1531.0"
}
}
}
}{
"bundle": {
"windows": {
"webviewInstallMode": {
"type": "embedBootstrapper"
}
}
}
}Cargo.toml[dependencies]
tauri = { version = "2", features = ["windows7-compat"] }$env:TAURI_BUNDLER_WIX_FIPS_COMPLIANT = "true"
npm run tauri buildset TAURI_BUNDLER_WIX_FIPS_COMPLIANT=true
npm run tauri buildtauri.microsoftstore.conf.json{
"bundle": {
"windows": {
"webviewInstallMode": {
"type": "offlineInstaller"
}
}
},
"identifier": "com.yourcompany.yourapp",
"publisher": "Your Company Name"
}npm run tauri icon /path/to/app-icon.pngnpm run tauri build -- --config tauri.microsoftstore.conf.jsoncom.myapp.myapp{
"identifier": "com.myapp.myapp",
"publisher": "MyApp Software Inc"
}{
"bundle": {
"windows": {
"certificateThumbprint": "YOUR_CERTIFICATE_THUMBPRINT",
"timestampUrl": "http://timestamp.digicert.com"
}
}
}# Certificate path
export TAURI_SIGNING_PRIVATE_KEY_PASSWORD="your-password"
# Or via tauri.conf.jsonhttp://timestamp.digicert.comhttp://timestamp.sectigo.comhttp://timestamp.globalsign.com/tsa/r6advanced1