Tauriの基礎 - ビルドと配布

提供: MochiuWiki : SUSE, EC, PCB

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

概要

Tauriは、RustバックエンドとWebフロントエンドを組み合わせたデスクトップアプリケーション開発フレームワークである。

ビルドシステムは、RustのコンパイルとWebアセットのバンドルを自動的に統合し、各プラットフォームに最適化された配布形式を生成する。

主な特徴は以下の通りである。

  • クロスプラットフォームビルド
    Windows (msi, exe)、MacOS (app, dmg)、Linux (deb, rpm, AppImage) に対応する。
  • 軽量なバイナリ
    Rustの最適化により、小さなファイルサイズで配布できる。
  • 複数のバンドル形式
    プラットフォームごとに適切なインストーラ形式を選択できる。
  • CI/CD連携
    GitHub Actionsと連携した自動ビルドが可能である。


Tauriのビルドプロセスでは、フロントエンドのビルド (Vite, webpack等)、Rustバックエンドのコンパイル、およびバンドル作成が一連のフローで実行される。


ビルドコマンド

Tauriのビルドは、tauri build コマンドを実行する。

基本構文

ビルドコマンドの基本構文を以下に示す。

# 基本的なビルド実行
pnpm tauri build

# 特定の設定ファイルを指定
pnpm tauri build --config src-tauri/tauri.production.conf.json

# バンドルを作成せずにバイナリのみビルド
pnpm tauri build --no-bundle

# デバッグビルド
pnpm tauri build --debug


パッケージマネージャ別の実行方法

使用するパッケージマネージャに応じて、コマンドが異なる。

パッケージマネージャ別のビルドコマンド
パッケージマネージャ コマンド 備考
npm npm run tauri build package.json ファイルの scripts に定義が必要
yarn yarn tauri build Yarn v1 / v2 / v3 対応
pnpm pnpm tauri build 推奨パッケージマネージャ
bun bun tauri build 高速なパッケージマネージャ
cargo cargo tauri build Rust専用 (フロントエンドは別途ビルド)


主要オプション一覧

下表に、tauri build コマンドの主要オプションを示す。

tauri buildコマンドのオプション一覧
オプション 説明 使用例
--config 設定ファイルを指定する --config tauri.prod.conf.json
--target ビルドターゲットを指定する --target x86_64-pc-windows-msvc
--features Cargo featuresを有効化する --features custom-protocol
--no-bundle バンドルを作成しない --no-bundle
--debug デバッグモードでビルドする --debug
--bundles 生成するバンドル形式を指定する --bundles msi,nsis
--verbose 詳細なログを出力する -v または --verbose


tauri build と tauri bundleの使い分け

tauri buildtauri bundle は用途が異なる。

コマンドの使い分け
コマンド 用途 実行内容
tauri build アプリケーションの完全ビルド フロントエンドビルド + Rustコンパイル + バンドル作成
tauri bundle バンドルのみ作成 既存のバイナリからバンドルを作成


tauri bundle コマンドは、バイナリが既に存在する場合にバンドル形式のみを作成する時に使用する。

# 特定のバンドル形式のみ作成
pnpm tauri bundle --bundles app,dmg       # MacOS
pnpm tauri bundle --bundles msi,nsis      # Windows
pnpm tauri bundle --bundles deb,appimage  # Linux



バンドル形式

Tauriは各プラットフォームに対応した複数のバンドル形式をサポートしている。

プラットフォーム別バンドル形式

プラットフォーム別バンドル形式一覧
プラットフォーム バンドル形式 拡張子 説明
Linux deb .deb Debian/Ubuntu系パッケージ
Linux rpm .rpm Red Hat/Fedora系パッケージ
Linux AppImage .AppImage ポータブル実行形式
Windows msi .msi Windows Installer (WiX)
Windows nsis .exe NSISインストーラ
MacOS app .app MacOSアプリケーションバンドル
MacOS dmg .dmg MacOSディスクイメージ


Linux バンドル形式

Linuxでは、3つのバンドル形式から選択できる。

rpm (RPM Package)

Red Hat/Fedora系ディストリビューション向けのパッケージ形式である。

  • 対象ディストリビューション
    RHEL, SUSE等

  • 特徴
    パッケージマネージャ (dnf, zypper) で管理できる。
    依存関係が自動的に解決される。
    エンタープライズ環境で広く使用される。

  • 選択基準
    RHEL / SUSEユーザを対象とする場合に選択する。


deb (Debian Package)

Debian系ディストリビューション向けのパッケージ形式である。

  • 対象ディストリビューション
    Debian, Ubuntu, Linux Mint, Pop!_OS等

  • 特徴
    パッケージマネージャ (apt) で管理できる。
    依存関係が自動的に解決される。
    システムへの統合が容易である。

  • 選択基準
    Debian系ユーザを主な対象とする場合に選択する。


AppImage

ポータブルな実行形式で、インストール不要で実行できる。

  • 対象環境
    全てのLinuxディストリビューション

  • 特徴
    インストール不要
    単一ファイルで配布可能
    実行権限を付与するだけで動作する。
    サンドボックス機能を内蔵

  • 選択基準
    幅広いユーザへの配布や、ポータブル版が必要な場合に選択する。


Windowsバンドル形式

Windowsでは、2つのインストーラ形式から選択できる。

msi (Windows Installer - WiX)

Microsoft標準のインストーラ形式である。

  • 特徴
    Windows標準のインストーラ
    グループポリシーでの配布が可能
    エンタープライズ環境での展開に適している。
    サイレントインストール対応

  • 選択基準
    企業環境での配布、システム管理が必要な場合に選択する。


exe (NSIS)

NSIS (Nullsoft Scriptable Install System) ベースのインストーラである。

  • 特徴
    カスタマイズ性が高い。
    インストーラのUIを自由に設計可能
    ファイルサイズが比較的小さい。

  • 選択基準
    カスタムインストーラが必要な場合に選択する。


MacOSバンドル形式

MacOSでは、アプリケーションバンドルとディスクイメージ形式をサポートする。

app (Application Bundle)

MacOS標準のアプリケーション形式である。

  • 特徴
    MacOS標準のアプリケーション形式
    Finderから直接起動可能
    Applicationsフォルダにドラッグ&ドロップでインストール

  • 選択基準
    開発用または直接配布する場合に選択する。


dmg (Disk Image)

MacOSのディスクイメージ形式で、配布に適している。

  • 特徴
    MacOS標準の配布形式
    圧縮によりファイルサイズを削減可能
    インストールUIをカスタマイズ可能

  • 選択基準
    一般ユーザへの配布に選択する。


Universal Binary

Intel MacとApple Silicon Macの両方で動作するバイナリである。

  • 特徴
    x86_64とaarch64の両方のアーキテクチャに対応
    単一のファイルで全てのMacに対応可能
    ファイルサイズが増加する。

  • 作成方法
    Rustターゲットを追加してビルドする。


# Universal Binary用のターゲットを追加
rustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwin

# Universal Binaryをビルド
pnpm tauri build --target universal-apple-darwin
</syntaxhighlight>



tauri.conf.jsonファイルの設定

ビルド設定は、tauri.conf.json ファイルの bundle セクションで行う。

bundleセクションの基本構造

bundle セクションの基本的な構造を以下に示す。

bundle セクションの主要設定項目
設定項目 説明
active boolean バンドル作成の有効/無効
targets string / array 生成するバンドル形式
identifier string アプリケーション識別子 (逆ドメイン形式)
icon array アイコンファイルのパス
resources array バンドルに含めるリソース
copyright string 著作権情報
category string アプリケーションカテゴリ
shortDescription string 短い説明
longDescription string 詳細な説明


設定例

tauri.conf.json ファイルの設定例を以下に示す。

 {
   "build": {
     "beforeBuildCommand": "pnpm build",
     "beforeDevCommand": "pnpm dev",
     "frontendDist": "../dist",
     "devUrl": "http://localhost:5173"
   },
   "bundle": {
     "active": true,
     "targets": "all",
     "identifier": "com.example.myapp",
     "icon": [
       "icons/32x32.png",
       "icons/128x128.png",
       "icons/128x128@2x.png",
       "icons/icon.icns",
       "icons/icon.ico"
     ],
     "resources": ["resources/*"],
     "copyright": "Copyright (c) 2024 Example Corp.",
     "category": "DeveloperTool",
     "shortDescription": "My Tauri Application",
     "longDescription": "A cross-platform desktop application built with Tauri",
     "MacOS": {
       "minimumSystemVersion": "10.13",
       "entitlements": null,
       "exceptionDomain": "",
       "frameworks": [],
       "providerShortName": null,
       "signingIdentity": null
     },
     "windows": {
       "certificateThumbprint": null,
       "digestAlgorithm": "sha256",
       "timestampUrl": "",
       "wix": {
         "language": "ja-JP"
       },
       "nsis": {
         "installMode": "currentUser",
         "languages": ["Japanese", "English"]
       }
     },
     "linux": {
       "deb": {
         "depends": ["libwebkit2gtk-4.1-0"]
       }
     }
   },
   "productName": "My App",
   "version": "1.0.0"
 }


targetsの設定

targets には、生成するバンドル形式を指定する。

 // 全ての形式を生成
 "targets": "all"
 
 // 特定の形式のみ生成
 "targets": ["deb", "appimage"]
 
 // 単一の形式
 "targets": "msi"


identifierの設定

アプリケーション識別子は、逆ドメイン形式で指定する。

 // 推奨形式
 "identifier": "com.example.myapp"
 
 // 組織の場合
 "identifier": "org.company.product"


iconの設定

アイコンは各プラットフォームで必要な形式を指定する。

 "icon": [
   "icons/32x32.png",       // Linux (小サイズ)
   "icons/128x128.png",     // Linux (中サイズ)
   "icons/128x128@2x.png",  // MacOS (Retina)
   "icons/icon.icns",       // MacOS アイコン
   "icons/icon.ico"         // Windows アイコン
 ]


resourcesの設定

バンドルに含めるリソースファイルを指定する。

 // 全てのリソースを含める
 "resources": ["resources/*"]
 
 // 特定のファイルのみ
 "resources": ["resources/config.json", "resources/data/*"]
 
 // 複数のディレクトリ
 "resources": ["assets/*", "data/*", "templates/*"]


プラットフォーム別設定

各プラットフォーム固有の設定項目を以下に示す。

MacOSの設定
 "MacOS": {
   "minimumSystemVersion": "10.13",                      // 最低バージョン
   "entitlements": "entitlements.plist",                 // 権限設定
   "signingIdentity": "Developer ID Application: Name",  // 署名ID
   "hardenedRuntime": true,                              // Hardened Runtime
   "providerShortName": "ABCDEF"                         // Apple Provider ID
 }


Windowsの設定
 "windows": {
   "certificateThumbprint": "ABC123...",             // 証明書サムプリント
   "digestAlgorithm": "sha256",                      // ダイジェストアルゴリズム
   "timestampUrl": "http://timestamp.digicert.com",  // タイムスタンプサーバ
   "wix": {
     "language": "ja-JP"                             // インストーラ言語
   },
   "nsis": {
     "installMode": "currentUser",                   // インストールモード
     "languages": ["Japanese", "English"]
   }
 }


Linuxの設定
 "linux": {
   "deb": {
     "depends": ["libwebkit2gtk-4.1-0", "libssl3"],
     "desktopTemplate": null
   },
   "appimage": {
     "bundleMediaFramework": false
   }
 }


プラットフォーム固有設定ファイル

環境ごとに異なる設定を使用する場合、個別の設定ファイルを作成できる。

# プロジェクト構造
src-tauri/
├── tauri.conf.json           # 基本設定
├── tauri.macos.conf.json     # MacOS専用設定
├── tauri.windows.conf.json   # Windows専用設定
└── tauri.linux.conf.json     # Linux専用設定


# 特定の設定ファイルでビルド
pnpm tauri build --config src-tauri/tauri.macos.conf.json



アイコン設定

アイコンは各プラットフォームで異なる形式とサイズが要求される。

アイコン形式とサイズ

プラットフォーム別アイコン要件
プラットフォーム 形式 必要なサイズ 備考
Windows ICO 256x256, 128x128, 64x64, 48x48, 32x32, 16x16 マルチアイコン形式
MacOS ICNS 512x512, 256x256, 128x128, 64x64, 32x32, 16x16 Retina対応 (@2x)
Linux PNG 512x512, 256x256, 128x128, 64x64, 32x32 フリーサイズ対応


アイコン生成コマンド

Tauri CLIを使用して、ソース画像から各プラットフォームのアイコンを自動生成できる。

# アイコンを自動生成 (1024x1024以上のPNG画像が必要)
pnpm tauri icon ./path/to/source-icon.png

# 出力先を指定
pnpm tauri icon ./path/to/source-icon.png --output ./src-tauri/icons


生成されるファイル構成を以下に示す。

src-tauri/icons/
├── 32x32.png
├── 128x128.png
├── 128x128@2x.png
├── icon.icns     # MacOS用
├── icon.ico      # Windows用
└── icon.svg      # オプション


設定方法

生成したアイコンを tauri.conf.json ファイルに設定する。

 {
   "bundle": {
     "icon": [
       "icons/32x32.png",
       "icons/128x128.png",
       "icons/128x128@2x.png",
       "icons/icon.icns",
       "icons/icon.ico"
     ]
   }
 }


手動作成時の注意点

アイコンを手動で作成する場合の注意事項を以下に示す。

  • ソース画像は 1024x1024以上の解像度を推奨する。
    低解像度からの拡大は画質が劣化する。

  • PNG画像は透明度をサポートする必要がある。
    アルファチャンネルを含める。

  • ICOファイルは複数サイズを含める必要がある。
    Windowsで適切に表示されない場合はサイズ不足の可能性がある。

  • ICNSファイルはMacOS固有のツールで作成する。
    iconutil コマンド または sips コマンドを使用する。



デバッグビルドとリリースビルド

Tauriでは、デバッグ用とリリース用で異なるビルドプロファイルを使用する。

特徴と違いの比較

デバッグビルドとリリースビルドの比較
項目 デバッグビルド リリースビルド
最適化 なし (高速コンパイル) あり (実行速度優先)
ファイルサイズ 大きい 小さい
DevTools 有効 無効 (設定で変更可能)
パニック時の挙動 スタックトレース表示 アプリケーション終了
シンボル情報 含まれる 削除される (strip)
ビルド時間 短い 長い
用途 開発・デバッグ 本番配布


Cargo.tomlファイルのprofileの設定

Cargo.toml ファイルでリリースビルドの最適化設定を行う。

 [profile.release]
 # 最適化レベル
 # s: サイズ優先, z: さらにサイズ優先, 3: 速度優先
 opt-level = "s"
 
 # リンク時最適化 (LTO) : サイズ削減に有効
 lto = true
 
 # コード生成ユニット数 (1にすると最適化が効く)
 codegen-units = 1
 
 # パニック時の挙動
 # abort: 終了, unwind: スタック巻き戻し
 panic = "abort"
 
 # デバッグシンボルを削除
 strip = true


設定オプションの詳細

profile.release 設定オプション
オプション 説明
opt-level 0〜3, "s", "z" 最適化レベル
"s": サイズ優先
"z": さらにサイズ優先
3: 速度優先
lto true, false, "thin" リンク時最適化
true: 完全LTO
"thin": 高速LTO
codegen-units 1〜256 コード生成ユニット数
1: 最適化重視
16: 並列コンパイル重視
panic "abort", "unwind" パニック時の挙動
"abort": 即座に終了
"unwind": スタック巻き戻し
strip true, false, "symbols", "debuginfo" シンボル削除
true: 全て削除
"debuginfo": デバッグ情報のみ削除


DevToolsの有効化/無効化方法

リリースビルドでDevToolsを有効にするには、tauri.conf.json ファイルで設定する。

 {
   "build": {
     "withGlobalTauri": true
   },
   "tauri": {
     "security": {
       "devtools": true
     }
   }
 }


または、Rustコードで制御することも可能である。

 use tauri::Manager;
 
 fn main() {
    tauri::Builder::default()
       .setup(|app| {
          #[cfg(debug_assertions)]
          {
             // デバッグビルドのみDevToolsを開く
             let window = app.get_window("main").unwrap();
             window.open_devtools();
          }
          Ok(())
       })
       .run(tauri::generate_context!())
       .expect("error while running tauri application");
 }



コード署名

配布するアプリケーションには、コード署名を行うことが推奨される。

Windows 署名

Windowsでは、Authenticode署名を使用する。

SignTool と Authenticode

Windowsのコード署名には、SignToolを使用する。

  • 必要なもの
    • コード署名証明書 (EV または OV)
    • SignTool (Windows SDKに含まれる)
    • タイムスタンプサーバのURL


tauri.conf.jsonファイルでの証明書設定例
 {
   "bundle": {
     "windows": {
       "certificateThumbprint": "ABC123DEF456...",       // 証明書のサムプリント
       "digestAlgorithm": "sha256",                      // ダイジェストアルゴリズム
       "timestampUrl": "http://timestamp.digicert.com",  // タイムスタンプサーバ
       "wix": {
         "language": "ja-JP"
       }
     }
   }
 }


環境変数による署名設定

環境変数を使用して署名設定を行うことも可能である。

 # 環境変数を設定
 export TAURI_SIGNING_PRIVATE_KEY="private-key-path"
 export TAURI_SIGNING_PRIVATE_KEY_PASSWORD="password"
 
 # ビルド実行
 pnpm tauri build


署名確認方法
 # PowerShellで署名を確認
 Get-AuthenticodeSignature "path/to/app.exe"
 ## または
 signtool verify /pa "path/to/app.msi"


MacOS署名

MacOSでは、codesignとnotarizationが必要である。

codesignの基本

Apple Developer IDで署名を行う。

  • 必要なもの
    • Apple Developer Account
    • Developer ID Application 証明書
    • Xcode Command Line Tools


tauri.conf.jsonファイルでの設定例
 {
   "bundle": {
     "MacOS": {
       "signingIdentity": "Developer ID Application: Your Name (TEAM_ID)",
       "hardenedRuntime": true,
       "entitlements": "entitlements.plist",
       "providerShortName": "TEAM_ID"
     }
   }
 }


entitlements.plistファイルの作成

entitlements.plist ファイルでアプリケーションの権限を定義する。

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
    <!-- ネットワークアクセス -->
    <key>com.apple.security.network.client</key>
    <true/>
 
    <!-- ファイル読み取り -->
    <key>com.apple.security.files.user-selected.read-only</key>
    <true/>
 
    <!-- カメラアクセス (必要な場合) -->
    <key>com.apple.security.device.camera</key>
    <false/>
 
    <!-- マイクアクセス (必要な場合) -->
    <key>com.apple.security.device.audio-input</key>
    <false/>
 </dict>
 </plist>


Notarization (公証)

MacOS 10.15以降、Gatekeeperを通過するためにNotarizationが必須である。

# 1. アプリを署名してビルド
pnpm tauri build

# 2. Appleに送信して、Notarizationをリクエスト
xcrun notarytool submit "src-tauri/target/release/bundle/macos/MyApp.app.zip" \
  --apple-id "your@email.com" \
  --password "app-specific-password" \
  --team-id "TEAM_ID" \
  --wait

# 3. Notarization完了後、Stapleを適用
xcrun stapler staple "src-tauri/target/release/bundle/macos/MyApp.app"
</syntaxhighlight>


環境変数による署名設定
 # Apple Developer認証情報を設定
 export APPLE_ID="your@email.com"
 export APPLE_PASSWORD="app-specific-password"  # App-specific password
 export APPLE_TEAM_ID="TEAM_ID"
 
 # ビルド実行 (自動的に署名とNotarizationが行われる)
 pnpm tauri build


署名確認方法
# 署名を確認
codesign --verify --deep --strict --verbose=2 "MyApp.app"

# Notarizationを確認
spctl --assess --verbose --type exec "MyApp.app"



CI/CD連携 (GitHub Actions)

GitHub Actionsを使用して、複数プラットフォームの自動ビルドを行える。

tauri-apps/tauri-action の使用方法

Tauri公式のGitHub Actionを使用することで、簡単にCI/CDパイプラインを構築することができる。

マトリックスビルド設定例

.github/workflows/build.yml ファイルの設定例を以下に示す。

 name: Build and Release
 
 on:
   push:
     tags:
       - 'v*'
   workflow_dispatch:
 
 jobs:
   build:
     strategy:
       fail-fast: false
       matrix:
         include:
           - platform: 'macos-latest'
             args: '--target universal-apple-darwin'
           - platform: 'ubuntu-22.04'
             args: ''
           - platform: 'windows-latest'
             args: ''
 
     runs-on: ${{ matrix.platform }}
 
     steps:
       - name: Checkout repository
         uses: actions/checkout@v4
 
       - name: Setup Node.js
         uses: actions/setup-node@v4
         with:
           node-version: '20'
 
       - name: Install Rust (stable)
         uses: dtolnay/rust-toolchain@stable
         with:
           targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
 
       - name: Install dependencies (Ubuntu only)
         if: matrix.platform == 'ubuntu-22.04'
         run: |
           sudo apt-get update
           sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
 
       - name: Install frontend dependencies
         run: pnpm install
 
       - name: Build Tauri app
         uses: tauri-apps/tauri-action@v0
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         with:
           tagName: ${{ github.ref_name }}
           releaseName: 'MyApp ${{ github.ref_name }}'
           releaseBody: 'See the assets to download and install this version.'
           releaseDraft: true
           prerelease: false
           args: ${{ matrix.args }}


MacOS署名用の証明書インポート例

MacOSでコード署名を行う場合、証明書をGitHub Secretsに登録して、ワークフローでインポートする必要がある。

 # MacOS署名用の追加ステップ
 - name: Import Apple Certificate
   if: matrix.platform == 'macos-latest'
   env:
     CERTIFICATE_BASE64: ${{ secrets.APPLE_CERTIFICATE_BASE64 }}
     CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
   run: |
     # 証明書を一時ファイルに作成
     echo $CERTIFICATE_BASE64 | base64 --decode > certificate.p12
 
     # キーチェーンにインポート
     security create-keychain -p actions temp.keychain
     security default-keychain -s temp.keychain
     security unlock-keychain -p actions temp.keychain
     security import certificate.p12 -k temp.keychain -P $CERTIFICATE_PASSWORD -T /usr/bin/codesign
     security set-key-partition-list -S apple-tool:,apple: -s -k actions temp.keychain
 
     # クリーンアップ
     rm -f certificate.p12


Windows署名用の証明書インポート例

Windowsでコード署名を行う場合の設定例を以下に示す。

 # Windows署名用の追加ステップ
 - name: Import Windows Certificate
   if: matrix.platform == 'windows-latest'
   env:
     CERTIFICATE_BASE64: ${{ secrets.WINDOWS_CERTIFICATE_BASE64 }}
     CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}
   run: |
     # 証明書を一時ファイルに作成
     [System.IO.File]::WriteAllBytes("certificate.pfx", [System.Convert]::FromBase64String($env:CERTIFICATE_BASE64))
 
     # 証明書をインストール
     $pwd = ConvertTo-SecureString -String $env:CERTIFICATE_PASSWORD -Force -AsPlainText
     Import-PfxCertificate -FilePath certificate.pfx -CertStoreLocation Cert:\CurrentUser\My -Password $pwd
 
     # クリーンアップ
     Remove-Item -Path certificate.pfx -Force


必要なGitHub Secrets

下表に、CI/CDでコード署名を行うために必要なGitHub Secretsを示す。

GitHub Secrets 一覧
Secret名 説明 プラットフォーム
APPLE_CERTIFICATE_BASE64 Base64エンコードされた.p12証明書 MacOS
APPLE_CERTIFICATE_PASSWORD 証明書のパスワード MacOS
APPLE_ID Apple ID (メールアドレス) MacOS
APPLE_PASSWORD App-specific password MacOS
APPLE_TEAM_ID Apple Developer Team ID MacOS
WINDOWS_CERTIFICATE_BASE64 Base64エンコードされた.pfx証明書 Windows
WINDOWS_CERTIFICATE_PASSWORD 証明書のパスワード Windows



出力先とファイル構造

ビルド完了後、成果物は特定のディレクトリに出力される。

ビルド成果物の場所

プラットフォーム別ビルド成果物の場所
プラットフォーム 成果物の場所 生成されるファイル
Linux src-tauri/target/release/bundle/ deb/, rpm/, appimage/
Windows src-tauri/target/release/ .exe, bundle/msi/
MacOS src-tauri/target/release/bundle/ macos/, dmg/


プロジェクト構造図

ビルド後の典型的なプロジェクト構造を以下に示す。

my-tauri-app/
├── src/                     # フロントエンドソース
│   ├── App.tsx
│   └── main.tsx
├── src-tauri/               # Rustバックエンド
│   ├── src/
│   │   └── main.rs
│   ├── tauri.conf.json
│   ├── Cargo.toml
│   ├── icons/               # アイコンファイル
│   └── target/              # ビルド成果物
│       └── release/
│           ├── my-app       # 実行可能ファイル
│           └── bundle/
│               ├── deb/
│               │   └── my-app_1.0.0_amd64.deb
│               ├── appimage/
│               │   └── my-app_1.0.0_amd64.AppImage
│               ├── msi/
│               │   └── My App_1.0.0_x64.msi
│               ├── nsis/
│               │   └── My App_1.0.0_x64-setup.exe
│               ├── macos/
│               │   └── My App.app
│               └── dmg/
│                   └── My App_1.0.0_x64.dmg
├── package.json
└── pnpm-lock.yaml


プラットフォーム別出力例

各プラットフォームで生成されるファイル名の例を以下に示す。

Linux
src-tauri/target/release/bundle/
├── deb/
│   └── my-app_1.0.0_amd64.deb
├── rpm/
│   └── my-app-1.0.0-1.x86_64.rpm
└── appimage/
    └── my-app_1.0.0_amd64.AppImage


Windows
src-tauri/target/release/
├── my-app.exe                    # スタンドアロン実行ファイル
└── bundle/
    ├── msi/
    │   └── My App_1.0.0_x64.msi
    └── nsis/
        └── My App_1.0.0_x64-setup.exe


MacOS
src-tauri/target/release/bundle/
├── macos/
│   └── My App.app/               # アプリケーションバンドル
│       └── Contents/
│           ├── MacOS/
│           │   └── My App
│           ├── Resources/
│           └── Info.plist
└── dmg/
    └── My App_1.0.0_x64.dmg



トラブルシューティング

よくある問題と解決方法

トラブルシューティング一覧
問題 原因 解決方法
ビルドが失敗する 依存関係の不足 必要なライブラリをインストールする。
アイコンが表示されない アイコン形式/サイズの不一致 正しい形式とサイズのアイコンを用意する。
ファイルサイズが大きい 最適化不足 Cargo.tomlファイルで最適化設定を確認する。
MacOSでアプリが起動しない 署名 / Notarizationの問題 codesign と notarytool を確認する。
WindowsでSmartScreen警告 コード署名なし Authenticode署名を行う。
LinuxでWebViewエラー WebKit依存関係の不足 libwebkit2gtkライブラリをインストールする。


依存関係の問題

Linux
# RHEL
## 開発ツールグループのインストール
sudo dnf group install "Development Tools"

## 各種ライブラリのインストール
sudo dnf install curl wget openssl-devel gtk3-devel webkit2gtk4.1-devel libayatana-appindicator-gtk3-devel \
                 librsvg2-devel

# SUSE
sudo zypper install curl wget make gcc libopenssl-devel gtk3-devel webkit2gtk4.1-devel libayatana-appindicator3-devel \
                    librsvg-devel

# Debian
sudo apt update
sudo apt install curl wget build-essential libssl-dev libgtk-3-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev \
                 librsvg2-dev


または、Tauriが提供するスクリプトを使用してインストールする。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh


MacOS
# Xcode Command Line Tools をインストール
xcode-select --install

# Rust をインストール
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh


Windows

まず、Microsoft Visual C++ Build Toolsをインストールする。


次に、Rustをインストールする。


アイコンが表示されない問題

アイコンが正しく表示されない場合の確認事項を示す。

  • ファイルパスが正しいか確認する
    tauri.conf.json ファイルの icon 設定を確認する。

  • アイコンサイズが適切か確認する。
    1024x1024以上のソース画像を使用する。

  • ファイル形式が正しいか確認する。
    Windows: ICO
    MacOS: ICNS
    Linux: PNG


ビルドエラーの対処法

Rustコンパイルエラー
# 詳細なエラー情報を表示
RUST_BACKTRACE=1 pnpm tauri build

# Cargo の詳細ログ
CARGO_LOG=cargo::core::compiler::fingerprint=info pnpm tauri build


フロントエンドビルドエラー

フロントエンドを単独でビルドして確認する。

pnpm build


または、キャッシュをクリアして再ビルドする。

rm -rf node_modules dist
pnpm install
pnpm build


依存関係の問題

Cargo.lockファイルを削除して再ビルドする。

rm -rf src-tauri/Cargo.lock src-tauri/target
pnpm tauri build
</syntaxhighlight>


診断コマンド

問題の診断に使用できるコマンドを以下に示す。

# Tauri環境情報を表示
pnpm tauri info

# Rust のバージョン確認
rustc --version
cargo --version

# Node.js / pnpm のバージョン確認
node --version
pnpm --version

# インストール済みのRustターゲット一覧
rustup target list --installed

# クリーンビルド
pnpm tauri build --verbose



参考リンク