distributing-tauri-for-windows について
Tauri v2 開発者向けの Windows 配布ガイドです。MSI と NSIS のビルド、インストーラーの設定・カスタマイズ、Microsoft Store への申請を扱います。
主な機能
- 01MSI と NSIS インストーラーのビルド
- 02WebView2 のインストール方式設定
- 03WiX と NSIS インストーラーのカスタマイズ
- 04インストーラーの言語設定
- 05コード署名とタイムスタンプの設定
- 06Microsoft Store リリースの準備
活用シーン
- 01Tauri アプリの Windows 向けパッケージ作成
- 02Linux または macOS での NSIS ビルド
- 03オフラインや企業向け配布での WebView2 設定
- 04Tauri アプリの Store 申請準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dchuk/ claude-code-tauri-skills --skill distributing-tauri-for-windowsインストール後、Claude Code で/distributing-tauri-for-windowsを入力して読み込まれたか確認します。
詳細
Windows 向け Tauri アプリケーションの配布
このスキルでは、MSI/NSIS インストーラーの作成とカスタマイズ、Microsoft Store への提出など、Tauri v2 アプリケーションの Windows 向け配布について説明します。
インストーラー形式の概要
Tauri は、次の 2 種類の Windows インストーラー形式に対応しています。
| 形式 | 拡張子 | ビルドプラットフォーム | 備考 |
|---|---|---|---|
| WiX MSI | .msi | Windows のみ | 従来の Windows インストーラー |
| NSIS | -setup.exe | クロスプラットフォーム | Linux/macOS でもビルドできます |
インストーラーのビルド
標準ビルド(Windows)
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
クロスプラットフォーム NSIS ビルド(Linux/macOS)
NSIS インストーラーは Windows 以外のシステムでもビルドできます。
前提条件(Linux):
# 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
前提条件(macOS):
# 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-xwin
ビルドコマンド:
npm run tauri build -- --runner cargo-xwin --target x86_64-pc-windows-msvc
WebView2 のインストールモード
エンドユーザーのマシンに WebView2 ランタイムをインストールする方法を設定します。
| モード | インターネット接続 | サイズへの影響 | 最適な用途 |
|---|---|---|---|
downloadBootstrapper | 必要 | 0 MB | デフォルト。最小サイズのインストーラー |
embedBootstrapper | 必要 | 約 1.8 MB | Windows 7 のサポートを強化 |
offlineInstaller | 不要 | 約 127 MB | オフライン/エアギャップ環境 |
fixedVersion | 不要 | 約 180 MB | 管理されたエンタープライズ環境への展開 |
skip | 不要 | 0 MB | 推奨されません |
設定
{
"bundle": {
"windows": {
"webviewInstallMode": {
"type": "embedBootstrapper" // or: downloadBootstrapper, offlineInstaller, fixedVersion
}
}
}
}
fixedVersion の場合は、パス "path": "./WebView2Runtime" を追加します。
WiX MSI のカスタマイズ
カスタム WiX テンプレート
デフォルトのテンプレートを置き換えます。
{
"bundle": {
"windows": {
"wix": {
"template": "./windows/custom-template.wxs"
}
}
}
}
WiX フラグメント
XML フラグメントを使用してカスタム機能を追加します。
1. フラグメントファイルを作成します(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>
2. 設定で参照します:
{
"bundle": {
"windows": {
"wix": {
"fragmentPaths": ["./windows/fragments/registry.wxs"],
"componentRefs": ["MyFragmentRegistryEntries"]
}
}
}
}
国際化(WiX)
{
"bundle": {
"windows": {
"wix": {
"language": ["en-US", "fr-FR", "de-DE"], // Single: "fr-FR"
"localePath": "./windows/locales" // Optional: custom locale files
}
}
}
}
NSIS インストーラーのカスタマイズ
インストールモード
| モード | 管理者権限が必要 | インストール先 | 用途 |
|---|---|---|---|
perUser | いいえ | %LOCALAPPDATA% | デフォルト。昇格不要 |
perMachine | はい | %PROGRAMFILES% | システム全体へのインストール |
both | はい | ユーザーが選択 | 柔軟な展開 |
{
"bundle": {
"windows": {
"nsis": {
"installMode": "perMachine"
}
}
}
}
インストーラーフック
カスタム NSIS スクリプトを使用してインストールを拡張します。
1. フックファイルを作成します(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
2. 設定で参照します:
{
"bundle": {
"windows": {
"nsis": {
"installerHooks": "./windows/hooks.nsh"
}
}
}
}
国際化(NSIS)
NSIS インストーラーは、1 つのファイルで複数の言語に対応できます。
{
"bundle": {
"windows": {
"nsis": {
"languages": ["English", "French", "German", "Spanish"],
"displayLanguageSelector": true
}
}
}
}
WebView2 の最小バージョン
特定の WebView2 バージョンを必須にします。
{
"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"
}
}
}
}
特別な設定
Windows 7 のサポート
{
"bundle": {
"windows": {
"webviewInstallMode": {
"type": "embedBootstrapper"
}
}
}
}
Cargo.toml で Windows 7 の通知サポートを有効にします。
[dependencies]
tauri = { version = "2", features = ["windows7-compat"] }
FIPS 準拠
ビルド前に環境変数を設定します。
PowerShell:
$env:TAURI_BUNDLER_WIX_FIPS_COMPLIANT = "true"
npm run tauri build
コマンドプロンプト:
set TAURI_BUNDLER_WIX_FIPS_COMPLIANT=true
npm run tauri build
Microsoft Store での配布
要件
- 開発者登録済みの Microsoft アカウント
- WebView2 のオフラインインストーラーモード(Store ポリシーで必須)
- 製品名と異なる発行者名
Store 固有の設定
tauri.microsoftstore.conf.json を作成します。
{
"bundle": {
"windows": {
"webviewInstallMode": {
"type": "offlineInstaller"
}
}
},
"identifier": "com.yourcompany.yourapp",
"publisher": "Your Company Name"
}
Store アイコンの生成
npm run tauri icon /path/to/app-icon.png
これにより、Microsoft Store 用アセットを含む、必要なすべてのサイズのアイコンが生成されます。
Store 向けのビルド
npm run tauri build -- --config tauri.microsoftstore.conf.json
提出手順
- オフラインインストーラーの設定でビルドします
- 有効なコード署名証明書でインストーラーに署名します
- Partner Center(Apps and Games)でアプリの掲載情報を作成します
- 一意のアプリ名を予約します
- インストーラーを配布サービスにアップロードします
- Store の掲載情報にインストーラーの URL をリンクします
- 認定審査に提出します
発行者名の制約
発行者名を製品名と同じにすることはできません。バンドル識別子が com.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.json
タイムスタンプサーバー
一般的なタイムスタンプサーバー:
- DigiCert:
http://timestamp.digicert.com - Sectigo:
http://timestamp.sectigo.com - GlobalSign:
http://timestamp.globalsign.com/tsa/r6advanced1
トラブルシューティング
Windows 以外で MSI のビルドに失敗する
MSI ファイルは WiX Toolset を使用して Windows 上でのみビルドできます。クロスプラットフォームのビルドには NSIS を使用してください。
WebView2 がインストールされない
- WebView のインストールモードの設定を確認します
- ブートストラップモードの場合は、インターネット接続を確認します
- オフラインモードの場合は、インストーラーのサイズが許容範囲内であることを確認します
NSIS のクロスコンパイルエラー
- NSIS がインストールされ、PATH に設定されていることを確認します
- LLVM/clang のインストールを確認します
- Windows の Rust ターゲットがインストールされていることを確認します
- cargo-xwin がインストールされていることを確認します
証明書が見つからない
- 証明書が Windows の証明書ストアにインストールされていることを確認します
- サムプリントが完全に一致していることを確認します(スペースなし)
- 証明書の秘密鍵にアクセスできることを確認します