Windows インストーラー
Windows 用の Tauri アプリケーションは、WiX Toolset v3 を用いて「Microsoft インストーラー」(.msi
ファイル)として配布されるか、NSIS を使用して「セットアップ実行可能ファイル」(-setup.exe
ファイル)として配布されます。
WiX Toolset Windows のインストーラー・パッケージをビルドするためのツールセット。上記の「v3」と「v4」は「deprecated(サポート終了、非推奨)」になっており、2025.05 現在のバージョンは「v6」。日本語版チュートリアル もありますが、残念ながら「v3」ベースです。WiX Toolset は現在 FireGiant 社にて管理されています。Wix 最新バージョンはこちら。
NSIS Nullsoft Scriptable Install System の略。スクリプトベースの Windows アプリケーション・インストーラー作成ツール。
「.msi
インストーラー」は、クロス・コンパイルが機能しないため、 Windows でのみ作成可能 であることに注意してください。
NSIS インストーラーのクロス・コンパイルは現在「試験運用中」です。
この章では、「Windows インストーラー」で利用可能なカスタマイズ・オプションに関する情報を提供します。
アプリをビルドして Windows インストーラーにバンドルするには、Tauri CLI を使用して、Windows コンピューター上で tauri build
コマンドを実行します:
npm run tauri build
yarn tauri build
pnpm tauri build
deno task tauri build
bun tauri build
cargo tauri build
NSIS を使用すると、Linux および macOS ホスト上で Windows アプリをクロス・コンパイルできます。 ただし、これは現時点では非常に実験的なものと考えられており、すべてのシステムまたはすべてのプロジェクトで機能するわけではないことに注意してください。 したがって、ローカル仮想マシン(VM, Virtual Machine)または GitHub Actions などの CI ソリューション(継続的インテグレーション)が機能しない場合にのみ、最後の手段として使用する必要があります。
Tauri は公式には MSVC Windows ターゲットのみをサポートしているため、セットアップは少し手間が掛かります。
MSVC Microsoft Visual C++。
一部の Linux ディストリビューションではリポジトリに NSIS が用意されています。たとえば、Ubuntu では次のコマンドを実行して NSIS をインストールできます:
sudo apt install nsis
しかし、他の多くのディストリビューションでは、NSIS を自分でコンパイルするか、ディストリビューションのバイナリ・パッケージに含まれていない「スタブとプラグイン」を手動でダウンロードする必要があります。 たとえば、Fedora はバイナリのみを提供し、スタブとプラグインは提供していません:
sudo dnf in mingw64-nsiswget https://github.com/tauri-apps/binary-releases/releases/download/nsis-3/nsis-3.zipunzip nsis-3.zipsudo cp nsis-3.08/Stubs/* /usr/share/nsis/Stubs/sudo cp -r nsis-3.08/Plugins/** /usr/share/nsis/Plugins/
macOS で NSIS をインストールするには Homebrew が必要です:
brew install nsis
デフォルトの「Microsoft リンカー」は Windows でしか動作しないため、新しいリンカーもインストールする必要があります。
また、特にアプリ・アイコンの設定などに使用される「Windows リソース・ファイル」をコンパイルするには、LLVM プロジェクトの一部である llvm-rc
バイナリも必要になります。
LLVM Low Level Virtual Machine/低水準仮想機械。任意のプログラミング言語に対応可能なコンパイラ基盤(Wikipedia)。
sudo apt install lld llvm
Linux では、ビルド・スクリプトの一部として C/C++ の依存関係をコンパイルする依存関係を追加した場合は、clang
パッケージもインストールする必要があります。
デフォルトの Tauri アプリでは、これは必要ありません。
brew install llvm
macOS では、インストール出力で提案されているように、$PATH
に /opt/homebrew/opt/llvm/bin
を追加する必要もあります。
64 ビット Windows システムを「ターゲット」にビルドしていると仮定します:
rustup target add x86_64-pc-windows-msvc
Windows SDK(ソフトウェア開発キット)を手作業で設定する代わりに、[cargo-xwin
] を Tauri の「ランナー」として使用します:
cargo install --locked cargo-xwin
ランナー runner: アプリケーションをビルドして実行するために使用するバイナリ。
デフォルトでは、cargo-xwin
は Windows SDK をプロジェクトのローカル・フォルダーにダウンロードします。
あなたに複数のプロジェクトがあり、そのファイルを共有したい場合には、環境変数の XWIN_CACHE_DIR
に、「Windows SDK」のダウンロード先として都合の良い場所へのパスを設定します。
あとは、「ランナー」と「ターゲット」を tauri build
コマンドに追加するだけです:
npm run tauri build -- --runner cargo-xwin --target x86_64-pc-windows-msvc
yarn tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc
pnpm tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc
deno task tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc
bun tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc
cargo tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc
ビルド結果は target/x86_64-pc-windows-msvc/release/bundle/nsis/
に保存されます。
Tauri CLI は、デフォルトでは、使用している PC のアーキテクチャ用に実行可能ファイルをコンパイルします。 あなたが 64 ビット・マシンで開発しているのであれば、CLI は 64 ビット・アプリケーションを生成します。
もし 32 ビット マシンをサポートする必要がある場合は、--target
フラグを使用して、異なる Rust ターゲット に向けてアプリケーションをコンパイルできます:
npm run tauri build -- --target i686-pc-windows-msvc
yarn tauri build --target i686-pc-windows-msvc
pnpm tauri build --target i686-pc-windows-msvc
deno task tauri build --target i686-pc-windows-msvc
bun tauri build --target i686-pc-windows-msvc
cargo tauri build --target i686-pc-windows-msvc
デフォルトでは、Rust はあなたの PC に対応したターゲット用のツールチェーンのみをインストールするため、32 ビット用では、最初に 32 ビット Windows ツールチェーンをインストールする必要があります: rustup target add i686-pc-windows-msvc
。
ARM64 用にビルドする必要がある場合は、まず最初に追加のビルド・ツールをインストールする必要があります。
これには、Visual Studio Installer
を開き、「Modify/変更」をクリックして、「Individual Components/個別のコンポーネント」タブで「C++ ARM64 build tools」をインストールしてください。
英文版執筆時点では、VS2022(統合開発環境 Visual Studio 2022)でのビルド・ツールの正確な名称は「MSVC v143 - VS 2022 C++ ARM64 build tools (Latest)
」です。
これで、rustup target add aarch64-pc-windows-msvc
を使用して ARM64 用「rust ターゲット」を追加し、上記の方法を使用してアプリをコンパイルします:
npm run tauri build -- --target aarch64-pc-windows-msvc
yarn tauri build --target aarch64-pc-windows-msvc
pnpm tauri build --target aarch64-pc-windows-msvc
deno task tauri build --target aarch64-pc-windows-msvc
bun tauri build --target aarch64-pc-windows-msvc
cargo tauri build --target aarch64-pc-windows-msvc
なお、NSIS インストーラ自体は、ARM マシン上でもエミュレーションを介した x86 で実行されます。アプリ自体は「ネイティブ ARM64 バイナリ」になります。
デフォルトでは、「Microsoft インストーラー」(.msi
)は、Windows 7 では動作しません。これは、WebView2 ブートストラップ・ローダーがインストールされていない場合はそれをダウンロードする必要があるからです(このブートストラップ・ローダーは、オペレーティング・システムで TLS 1.2 が有効になっていないと動作しない可能性があります)。
Tauri には、WebView2 ブートストラップ・ローダーを埋め込むオプションが含まれています(後述の「WebView2 のインストール・オプション」内の ブートストラップ・ローダーの埋め込み の項を参照してください)。
NSIS ベースのインストーラー(-setup.exe
)は、Windows 7 の downloadBootstrapper
モードもサポートしています。
ブートストラップ・ローダー 原文 bootstrapper(ブートストラッパー): アプリケーションのインストールの前に必須コンポーネントを確認・インストールするインストーラー。すべての必須コンポーネントがインストール済の場合は、そのままアプリケーション・インストーラーが起動します。本稿では、「ブートストラップ(自己起動)」との誤認を避けるために「ブートストラップ・ローダー」とローディング機能を重視した訳語にしています。〔参考〕
さらに、Windows 7 で Notification API を使用するには、Cargo 機能の「windows7-compat
」を有効にする必要があります:
[dependencies]tauri-plugin-notification = { version = "2.0.0", features = [ "windows7-compat" ] }
FIPS 連邦情報処理標準/Federal Information Processing Standard: 情報技術製品の暗号化モジュールの最小セキュリティ要件を定義する米国政府標準。〔参考: Microsoft〕
あなたのシステムにおいて、MSI バンドルが「FIPS に準拠している」必要がある場合は、tauri build
を実行する前に「TAURI_FIPS_COMPLIANT
環境変数」を true
に設定してください。
PowerShell では、現在のターミナル・セッションに対して以下のように設定します:
$env:TAURI_FIPS_COMPLIANT="true"
インストーラーは、デフォルトで WebView2 ブートストラップ・ローダーをダウンロードし、ランタイム・ソフトウェアがインストールされていない場合はブートストラップ・ローダーを実行します。 あるいは、代案として、ブートストラップ・ローダーを埋め込んだり、オフライン・インストーラーを埋め込んだり、「WebView2 ランタイム・修正バージョン」を使用することもできます。 これらの方法の比較については、次の表を参照してください:
インストール 方法 | インターネット 接続 要否 | インストーラー 容量の増加 | 捕捉 |
---|---|---|---|
downloadBootstrapper | Yes | 0MB | Default インストーラーのサイズは小さくなりますが、 .msi ファイルによる Windows 7 の展開には推奨されません。 |
embedBootstrapper | Yes | ~1.8MB | Windows 7 での .msi インストーラーのサポートが向上しました。 |
offlineInstaller | No | ~127MB | WebView2 インストーラーを埋め込みます。オフライン環境用に推奨されます。 |
fixedVersion | No | ~180MB | WebView2 の修正バージョンを埋め込みます。 |
skip | No | 0MB | ⚠️ 非推奨 Windows インストラーでは WebView2 をインストールしません。 |
Windows 10(2018 年 4 月リリース以降)および Windows 11 では、WebView2 ランタイムはオペレーティング・システムの一部として配布されています。
これは Windows インストーラーをビルドするためのデフォルト設定です。ブートストラップ・ローダーをダウンロードして実行します。
インターネット接続が必要ですが、インストーラーのサイズは小さくなります。
.msi
インストーラー経由で Windows 7 に配布する場合は、この方法はお勧めしません。
{ "bundle": { "windows": { "webviewInstallMode": { "type": "downloadBootstrapper" } } }}
WebView2 ブートストラップ・ローダーを埋め込むには、webviewInstallMode を embedBootstrapper
に設定します。
これによりインストーラーのサイズが約 1.8 MB 増加しますが、Windows 7 システムとの互換性も向上します。
{ "bundle": { "windows": { "webviewInstallMode": { "type": "embedBootstrapper" } } }}
WebView2 ブートストラップ・ローダー を埋め込むには、webviewInstallMode を offlineInstaller
に設定します。
これによりインストーラーのサイズが約 127 MB 増加しますが、インターネット接続が利用できない場合でもアプリケーションをインストールできるようになります。
{ "bundle": { "windows": { "webviewInstallMode": { "type": "offlineInstaller" } } }}
システムが提供するランタイムを使用すると、WebView の脆弱性パッチが Windows によって管理されるため、セキュリティには好都合です。 各アプリケーションごとに WebView2 の配布方法を変えたい場合は(リリース・パッチを自分で管理するとか、インターネット接続が利用できない環境用にアプリケーションを配布するとか)、Tauri はランタイム・ファイルをバンドルできます。
- WebView2 の修正バージョン・ランタイムを Microsoft のウェブサイト からダウンロードします。
この例では、ダウンロードされたファイル名は
Microsoft.WebView2.FixedVersionRuntime.128.0.2739.42.x64.cab
です。 - ファイルをコア・フォルダーに展開します:
Expand .\Microsoft.WebView2.FixedVersionRuntime.128.0.2739.42.x64.cab -F:* ./src-tauri
tauri.conf.json
で WebView2 ランタイム・パスを設定します:
{ "bundle": { "windows": { "webviewInstallMode": { "type": "fixedRuntime", "path": "./Microsoft.WebView2.FixedVersionRuntime.98.0.1108.50.x64/" } } }}
tauri build
を実行して、修正版 WebView2 ランタイムを含む Windows インストーラーを生成します。
webviewInstallMode を skip
に設定することで、インストーラーから WebView2 ランタイムのダウンロード・チェックを行なわないようにすることができます。
もしユーザーがランタイムをインストールしていない場合、あなたのアプリケーションは動作しないことになります。
ユーザーがランタイムをインストールしておらず、またインストールを行なわない場合、あなたのアプリケーションは動作しません。
{ "bundle": { "windows": { "webviewInstallMode": { "type": "skip" } } }}
カスタマイズ・オプションの全リストを知りたい場合は、WiX configuration を参照してください。
.msi
Windows インストーラー・パッケージは、WiX Toolset v3 を使用してビルドされます。
現在、事前に定義された Wix 設定 とは別に、カスタム WiX ソース・コード(.wxs
ファイル拡張子を持つ XML ファイル)または WiX フラグメントを使用して、以下のように「Wix Toolset」の設定を変更できます。
Wix フラグメント 原文 WiX fragment: コンパイル時に他の WiX ソースへ組み込むことができる WiX ソース・コードのひとかたまりの「断片(フラグメント)」。フラグメントは、プログラム開発で使用するオブジェクト・ファイルやライブラリと同じように、他の製品のインストーラ・パッケージにリンクして組み込むことが出来ます。〔参考〕
Tauri によって定義された Windows インストーラー XML は、単純な Webview ベース・アプリケーションの一般的な使用方法で動作するように設定されています(「デフォルトの WiX テンプレート」は こちら を参照)。
テンプレート変換エンジンの handlebars を使用しているので、Tauri CLI はインストーラーをあなたの tauri.conf.json
定義に従って「ブランド化(差別化)」できます。
まったく別のインストーラーが必要な場合は、tauri.bundle.windows.wix.template
でカスタム・テンプレート・ファイルを設定できます。
ブランド化(差別化) 原文 the Tauri CLI can brand your installer … : 文意不詳。
WiX フラグメント は、WiX が提供するほぼすべてのものを設定可能なコンテナーです。 以下の事例では、二つのレジストリ・エントリを書き込む「フラグメント」を定義しています:
<?xml version="1.0" encoding="utf-8"?><Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Fragment> <!-- 以下のレジストリ・エントリはターゲットのユーザー・システムにインストールされるはずです --> <DirectoryRef Id="TARGETDIR"> <!-- インストールされるレジストリ・エントリをグループ化します --> <!-- 一意の「id」をここで指定することに注意 --> <Component Id="MyFragmentRegistryEntries" Guid="*"> <!-- レジストリ・キーは HKEY_CURRENT_USER\Software\MyCompany\MyApplicationName にあります --> <!-- Tauri はバンドル識別子の二番目の部分を「MyCompany」名として使用します(たとえば `com.tauri-apps.test` の `tauri-apps` の部分) --> <RegistryKey Root="HKCU" Key="Software\MyCompany\MyApplicationName" Action="createAndRemoveOnUninstall" > <!-- レジストリに保持する値 --> <RegistryValue Type="integer" Name="SomeIntegerValue" Value="1" KeyPath="yes" /> <RegistryValue Type="string" Value="Default Value" /> </RegistryKey> </Component> </DirectoryRef> </Fragment></Wix>
拡張子 .wxs
を持つ「フラグメント・ファイル」を src-tauri/windows/fragments
フォルダーに保存し、tauri.conf.json
で参照します。
{ "bundle": { "windows": { "wix": { "fragmentPaths": ["./windows/fragments/registry.wxs"], "componentRefs": ["MyFragmentRegistryEntries"] } } }}
インストーラーに組み込むためには、ComponentGroup
、Component
、FeatureGroup
、Feature
、Merge
の各エレメント ID が、componentGroupRefs
、componentRefs
、featureGroupRefs
、featureRefs
、mergeRefs
それぞれの tauri.conf.json
の wix
オブジェクトで参照されている必要があることに注意してください。
WiX インストーラーは、デフォルトで「en-US
」言語(米語)を使用してビルドされます。
国際化(i18n)については tauri.bundle.windows.wix.language
プロパティを使用して言語設定が可能で、Tauri がビルドすべきインストーラーの言語を定義します。
設定に仕様する「言語名」は、Microsoft ウェブサイトの「Error と ActionText のテーブルのローカライズ」にある一覧表の「言語−文化」の列で確認できます。
特定の言語のみを対象とするインストーラーを作成するには、language
値に言語の文字列を設定します:
{ "bundle": { "windows": { "wix": { "language": "fr-FR" } } }}
言語のリストをターゲットとするインストーラーをコンパイルするには、配列を使用します。 各言語用に特化したインストーラーが作成され、言語キーがサフィックス(接尾辞)として付けられます:
{ "bundle": { "windows": { "wix": { "language": ["en-US", "pt-BR", "fr-FR"] } } }}
国際化用文字列を設定するために、言語ごとに設定オブジェクトを定義できます:
{ "bundle": { "windows": { "wix": { "language": { "en-US": null, "pt-BR": { "localePath": "./wix/locales/pt-BR.wxl" } } } } }}
localePath
プロパティは、「言語−文化」を設定する XML、すなわち「言語ファイル」へのパスを定義します〔《訳注》以下の事例は「米語 en-US」設定なので、メッセージ表示が「英文」になります〕:
<WixLocalization Culture="en-US" xmlns="http://schemas.microsoft.com/wix/2006/localization"> <String Id="LaunchApp"> Launch MyApplicationName </String> <String Id="DowngradeErrorMessage"> A newer version of MyApplicationName is already installed. </String> <String Id="PathEnvVarFeature"> Add the install location of the MyApplicationName executable to the PATH system environment variable. This allows the MyApplicationName executable to be called from any location. </String> <String Id="InstallAppFeature"> Installs MyApplicationName. </String></WixLocalization>
現在、Tauri は次の「ロケール文字列」を参照します: LaunchApp
、DowngradeErrorMessage
、PathEnvVarFeature
、および InstallAppFeature
。
自分独自の文字列を定義し、"!(loc.TheStringId)"
を使用してカスタム・テンプレートまたはフラグメントでその文字列を参照できます。
詳細については、「WiX V3 ローカリゼーション・ドキュメント」(注意:このリンクは V3 版です)を参照してください。
カスタマイズ・オプションの全リストについては、[NSIS 設定] を参照してください。
Tauri によって定義された NSIS インストーラーの .nsi
スクリプトは、単純な WebView ベースのアプリケーションの一般的な使用方法で動作するように設定されています(「デフォルトの nsis テンプレート」は こちら)。
テンプレート変換エンジンの handlebars を使用しているので、Tauri CLI はインストーラーをあなたの tauri.conf.json
定義に従って「ブランド化(差別化)」できます。
まったく別のインストーラーが必要な場合は、tauri.bundle.windows.nsis.template
でカスタム・テンプレート・ファイルの設定が可能です。
いくつかのインストール手順を拡張するだけでよい場合は、インストーラー・テンプレート全体を置き換えるのではなく、「インストーラー・フック」(割り込み処理を追加する仕組み)を使用できる場合があります。
利用可能な「フック」は次のとおりです:
NSIS_HOOK_PREINSTALL
: ファイルのコピー、レジストリ・キーの値の設定、ショートカットの作成の前に実行されます。NSIS_HOOK_POSTINSTALL
: インストーラーがすべてのファイルのコピー、レジストリ・キーの設定、ショートカットの作成を完了した後に実行されます。NSIS_HOOK_PREUNINSTALL
: ファイル、レジストリ・キー、ショートカットを削除する前に実行されます。NSIS_HOOK_POSTUNINSTALL
: ファイル、レジストリ・キー、ショートカットが削除された後に実行されます。
たとえば src-tauri/windows
フォルダに hooks.nsi
ファイルを作成し、必要なフックを定義するには:
!macro NSIS_HOOK_PREINSTALL MessageBox MB_OK "PreInstall"!macroend
!macro NSIS_HOOK_POSTINSTALL MessageBox MB_OK "PostInstall"!macroend
!macro NSIS_HOOK_PREUNINSTALL MessageBox MB_OK "PreUnInstall"!macroend
!macro NSIS_HOOK_POSTUNINSTALL MessageBox MB_OK "PostUninstall"!macroend
次に、そのフック・ファイルを使用するように Tauri を設定します:
{ "bundle": { "windows": { "nsis": { "installerHooks": "./windows/hooks.nsi" } } }}
デフォルトでは、インストーラーは現在のユーザーに対してのみアプリケーションをインストールします。
このオプションの利点は、インストーラーの実行に管理者権限を必要としないことですが、アプリは C:/Program Files
ではなく %LOCALAPPDATA%
フォルダーにインストールされます。
アプリのインストールをシステム全体で利用できるようにするには(管理者権限が必要です)、installMode を「perMachine
(マシン単位で)」に設定します:
{ "bundle": { "windows": { "nsis": { "installMode": "perMachine" } } }}
あるいは、installMode を「both
(両方)」に設定することで、アプリを現在のユーザーのみにインストールするか、システム全体にインストールするかをユーザーが選択できるようにすることもできます。
インストーラーを実行するには管理者権限が必要であることに注意してください。
詳細については、NSISInstallerMode を参照してください。
NSIS インストーラーは多言語インストーラーですので、常に選択したすべての翻訳を含んだ単一のインストーラーが作成されます。
どの言語を含めるかは、tauri.bundle.windows.nsis.languages
プロパティで指定します。
NSIS でサポートされている言語のリストは、NSIS GitHub プロジェクト から入手できます。
Tauri 固有の翻訳 が必要なものがいくつかありますので、翻訳されていないテキストを見つけた場合は、Tauri のメイン・リポジトリ で 「Feature Request(機能要求)」を作成してください。
あるいは カスタム翻訳ファイルを提供することもできます。
カスタム翻訳ファイル 原文 custom translation files: このリンク先タイトルは「カスタム翻訳ファイル」となっていますが、リンク先は「customLanguageFiles」(カスタム言語ファイル)です。
デフォルトでは、インストーラー言語の決定にはオペレーティング・システムのデフォルト言語が用いられます。 インストーラーの内容がレンダリングされる前に「言語セレクター」を表示するようにインストーラーを設定することもできます:
{ "bundle": { "windows": { "nsis": { "displayLanguageSelector": true } } }}
あなたのアプリが、新しい Webview2 バージョンでのみ利用可能な機能(カスタム URI スキームなど)を必要としている場合は、Windows インストーラーに「現在の Webview2 バージョンを確認し、ターゲット・バージョンと一致しない場合は Webview2 ブートストラップ・ローダーを実行する」ように指示できます。
{ "bundle": { "windows": { "nsis": { "minimumWebview2Version": "110.0.1531.0" } } }}
【※ この日本語版は、「Mar 29, 2025 英語版」に基づいています】
© 2025 Tauri Contributors. CC-BY / MIT