i18n(ja) Distribute Section Part 2 (#3336)

Co-authored-by: Vitor Ayres <gitkey@virtuaires.com.br>
This commit is contained in:
Junichi TAKAI (たかい じゅんいち)
2025-09-30 03:51:04 +09:00
committed by GitHub
parent 605649b346
commit 7eb4f40695
7 changed files with 1947 additions and 0 deletions

View File

@@ -0,0 +1,177 @@
---
title: Flathub
sidebar:
order: 1
i18nReady: true
---
import { Tabs, TabItem, Card } from '@astrojs/starlight/components';
import TranslationNote from '@components/i18n/TranslationNote.astro';
Flatpak の仕組みの詳細については、[初めての Flatpak ビルド](https://docs.flatpak.org/en/latest/first-build.html)(英語版)を参照してください。
<TranslationNote lang="ja">
**Flatpak** フラットパック。Linux で用いられているアプリ配布用のパッケージ形式で、さまざまなディストリビューション上で利用できます。
</TranslationNote>
この章では、Flatpak を配布する方法として、最も広く利用されているプラ​​ットフォームの「[Flathub](https://flathub.org/)(フラットハブ)」を経由して行なうことを前提としています。他のプラットフォームをご利用になる場合は、それぞれのドキュメントをご参照ください。
## 事前準備
アプリを Flathub にアップロードする前に、「Flatpak Runtime」実行環境内でアプリをテストするために、まずローカルで Flatpak をビルドします。このやりかたは、開発ビルドを素早く共有したい場合にも役立ちます。
**1. `flatpak` と `flatpak-builder` のインストール**
Flatpak をローカルでビルドするには、「`flatpak`」と「`flatpak-builder`」の両ツールが必要です。例えば UbuntuDebian 系 Linuxでは、以下のコマンドを実行します
<Tabs syncKey="distro">
<TabItem label="Debian">
```sh
sudo apt install flatpak flatpak-builder
```
</TabItem>
<TabItem label="Arch">
```sh
sudo pacman -S --needed flatpak flatpak-builder
```
</TabItem>
<TabItem label="Fedora">
```sh
sudo dnf install flatpak flatpak-builder
```
</TabItem>
<TabItem label="Gentoo">
```sh
sudo emerge --ask \
sys-apps/flatpak \
dev-util/flatpak-builder
```
</TabItem>
</Tabs>
**2. Flatpak Runtime のインストール**
```shell
flatpak install flathub org.gnome.Platform//46 org.gnome.Sdk//46
```
**3. [Tauri アプリの .deb をビルドする](https://v2.tauri.app/reference/config/#bundleconfig)**
**4. マニフェストの作成**
<TranslationNote lang="ja">
**マニフェスト** manifest 元の意味は「宣言書」「声明文」。"App manifest" は「アプリケーションが動作するために必要な情報を記述した XML ファイル」、"Cargo manifest" は、*物流*業界であれば「本船に船積みされている貨物cargoの明細書」、Rust プログラムであれば「プロジェクトのメタデータを記述した Cargo.toml ファイル」を指します。
</TranslationNote>
```yaml
id: org.your.id
runtime: org.gnome.Platform
runtime-version: '46'
sdk: org.gnome.Sdk
command: tauri-app
finish-args:
- --socket=wayland # ウィンドウに表示に必要なアクセス権
- --socket=fallback-x11 # ウィンドウ表示に必要なアクセス権
- --device=dri # OpenGLすべてのプロジェクトで必要なわけではありません
- --share=ipc
modules:
- name: binary
buildsystem: simple
sources:
- type: file
url: https://github.com/your_username/your_repository/releases/download/v1.0.1/yourapp_1.0.1_amd64.deb
sha256: 08305b5521e2cf0622e084f2b8f7f31f8a989fc7f407a7050fa3649facd61469 # リモート・ソースを使用している場合は必須です
only-arches: [x86_64] # このソースは x86_64 コンピュータでのみ使用されます
# このパスは、.deb バンドル内に作成されたバイナリ・ファイルを指しています
# Tauri は、解凍された .deb の内容に対応するフォルダーも作成します
build-commands:
- ar -x *.deb
- tar -xf data.tar.gz
- 'install -Dm755 usr/bin/tauri-app /app/bin/tauri-app'
- install -Dm644 usr/share/applications/yourapp.desktop /app/share/applications/org.your.id.desktop
- install -Dm644 usr/share/icons/hicolor/128x128/apps/yourapp.png /app/share/icons/hicolor/128x128/apps/org.your.id.png
- install -Dm644 usr/share/icons/hicolor/32x32/apps/yourapp.png /app/share/icons/hicolor/32x32/apps/org.your.id.png
- install -Dm644 usr/share/icons/hicolor/256x256@2/apps/yourapp.png /app/share/icons/hicolor/256x256@2/apps/org.your.id.png
- install -Dm644 org.your.id.metainfo.xml /app/share/metainfo/org.your.id.rosary.metainfo.xml
```
Gnome 46 runtime には、通常の Tauri アプリのすべての依存関係とその正しいバージョンが含まれています。
<TranslationNote lang="ja">
**Gnome 46 runtime** GNOMEームデスクトップ環境バージョン46の実行環境ランタイム
</TranslationNote>
**5. アプリのインストールとテスト**
```shell
# flatpak のインストール
flatpak -y --user install <local repo name> <your flatpak id>
# flatpak の実行
flatpak run <your flatpak id>
# flatpak のアップデート
flatpak -y --user update <your flatpak id>
```
## 追加ライブラリを追加
デフォルトの tauri アプリよりも多くのライブラリがあなたの最終的なバイナリに必要な場合は、不足しているライブラリを「flatpak マニフェスト」に追加する必要があります。
これには二つの方法があります。迅速なローカルでの開発では、ローカル・システムからビルド済みのライブラリ・ファイル(`.so`)をただ単に取り込むだけでうまくいくかもしれません。
しかし、flatpak の最終ビルドにはこの方法は推奨されません。なぜなら、ローカル・ライブラリ・ファイルは flatpak ランタイム環境用にはビルドされていないからです。
そのままでは非常に見つけにくいさまざまなバグが発生する可能性があります。
したがって、ビルド・ステップとしては、あなたのプログラムが依存するライブラリを flatpak 内のソースからビルドすることをお勧めします。
## flathub への開示
**_1. [Flathub Repository](https://github.com/flathub/flathub/fork) をフォークします_**
**_2. フォークをクローンします_**
```shell
git clone --branch=new-pr git@github.com:your_github_username/flathub.git
```
**_3. リポジトリに移動します_**
```shell
cd flathub
```
**_4. 新しいブランチを作成します_**
```shell
git checkout -b your_app_name
```
**_5. 自分のアプリの apps manifest を作成したブランチに追加し、行なった変更を「コミット」した後に「プッシュ」します。_**
**_6. github の `new-pr` ブランチに対して「プルリクエスト」を発行openします_**
**_7. これで、あなたのアプリはレビュー・プロセスに入ります。不具合箇所などがある場合には修正を求められることもあります。_**
「プルリクエスト」が承認されると、アプリのリポジトリへの招待が届き、編集が行なえます。これ以降は、アプリを継続的に更新できます。
詳細については、[flatpak のドキュメント](https://docs.flatpak.org/en/latest/dependencies.html#bundling) をご覧ください。
<div style="text-align: right;">
【※ この日本語版は、「Feb 28, 2025 英語版」に基づいています】
</div>

View File

@@ -0,0 +1,171 @@
---
title: Google Play
sidebar:
order: 1
i18nReady: true
---
import CommandTabs from '@components/CommandTabs.astro';
import TranslationNote from '@components/i18n/TranslationNote.astro';
「Google Play」グーグル・プレイは、Google 社が運営する Android アプリ配信サービスです。
この章では、Android アプリを Google Play に公開するために必要なことがらについて説明しています。
:::note
Tauri は内部で Android Studio プロジェクトを使用しているため、Android アプリのビルドと公開に関する公の慣行(決まりごと)はあなたのアプリにも適用されます。
詳細については、[Google Play 公式ドキュメント]を参照してください。
:::
<TranslationNote lang="ja">
**Android Studio プロジェクト** Android Studio project 「Android Studioアンドロイド・スタジオ」は Android アプリ開発を行なうための Google 公式開発ツール名。「[プロジェクト](https://developer.android.com/studio/projects?hl=ja)」は、アプリのソースコードやアセット、ビルド構成など、必要な情報をすべて定義・格納したファイルを言います。
</TranslationNote>
## 必要事項
Android アプリを、Google の Play Store で配布するには、[Google Play Console] で「デベロッパー・アカウント」を作成する必要があります。
さらには、[コード署名]も設定しなければなりません。
詳細については、[Google Play のリリース・チェックリスト] を参照してください。
## アプリ・アイコンの変更
`tauri android init` を実行して「Android Studio プロジェクト」をセットアップした後、`tauri icon` コマンドを使用してアプリ・アイコンを更新できます。
<CommandTabs
npm="npm run tauri icon /path/to/app-icon.png"
yarn="yarn tauri icon /path/to/app-icon.png"
pnpm="pnpm tauri icon /path/to/app-icon.png"
deno="deno task tauri icon /path/to/app-icon.png"
bun="bun tauri icon /path/to/app-icon.png"
cargo="cargo tauri icon /path/to/app-icon.png"
/>
## 設定
Google Play Console で「デベロッパー・アカウント」を作成したら、あなたのアプリを Google Play Console ウェブサイトに登録する必要があります。必要なフォームの記入や設定作業はすべて、ウェブサイトの案内に従って進めていきます。
## ビルド
次のコマンドを実行すると、Android App Bundle (AAB) をビルドして Google Play にアップロードできます:
<TranslationNote lang="ja">
**AAB 形式** Android App Bundle 形式 アプリのコンパイル済みコードとリソースがすべて含まれた公開形式。Google Play は App Bundle から、デバイス設定ごとに最適化した APK を生成、配信します。下記「[APKs のビルド](#apks-のビルド)」の項も参照。〔[参考](https://developer.android.com/guide/app-bundle?hl=ja#other_considerations)
</TranslationNote>
<CommandTabs
npm="npm run tauri android build -- --aab"
yarn="yarn tauri android build --aab"
pnpm="pnpm tauri android build --aab"
deno="deno task tauri android build --aab"
bun="bun tauri android build --aab"
cargo="cargo tauri android build --aab"
/>
Tauri は、[`tauri.conf.json > version`] に定義されている値 (`versionCode = major*1000000 + minor*1000 + patch`) からバージョン・コードを取得します。
異なるバージョン・コードの書式(たとえば、連続コード)で表示したい場合には、[`tauri.conf.json > bundle > android > versionCode`] の設定で独自のバージョン・コードを設定できます:
```json title="tauri.conf.json" ins={4}
{
"bundle": {
"android": {
"versionCode": 100
}
}
}
```
### APKs のビルド
Google Play にアップロードするバンドル・ファイルとしては「AAB 形式」が推奨されていますが、Google Play ストア外でのテストや配布に使用できる「APK」Android アプリケーション・パッケージ)を生成することもできます。
あなたのアプリを「APK」形式でコンパイルするには、引数 `--apk` を指定します:
<TranslationNote lang="ja">
**APK** Android Application Package 「Android パッケージ」形式APKは、Android 用のインストール可能かつ実行可能なアプリ形式です。上記の AAB 形式は、公開のみを目的としており、Android デバイスにインストールすることはできません。〔[参考](https://developer.android.com/guide/app-bundle/faq?hl=ja)
</TranslationNote>
<CommandTabs
npm="npm run tauri android build -- --apk"
yarn="yarn tauri android build --apk"
pnpm="pnpm tauri android build --apk"
deno="deno task tauri android build --apk"
bun="bun tauri android build --apk"
cargo="cargo tauri android build --apk"
/>
### 対象アーキテクチャの選択
デフォルトでは、Tauri はサポート対象のすべてのアーキテクチャすなわち、aarch64、armv7、i686、x86_64用にアプリをビルドします。
特定のアーキテクチャのみを対象にコンパイルを行なうには、引数 `--target` で指定します。
<CommandTabs
npm="npm run tauri android build -- --aab --target aarch64 --target armv7"
yarn="yarn tauri android build --aab --target aarch64 --target armv7"
pnpm="pnpm tauri android build --aab --target aarch64 --target armv7"
deno="deno task tauri android build --aab --target aarch64 --target armv7"
bun="bun tauri android build --aab --target aarch64 --target armv7"
cargo="cargo tauri android build --aab --target aarch64 --target armv7"
/>
### アーキテクチャごとの個別バンドル
デフォルトでは、生成された「AAB」と「APK」は汎用仕様であり、サポートされているすべてのアーキテクチャが含まれています。
アーキテクチャごとに個別のバンドルを生成するには、引数 `--split-per-abi` を指定します。
:::note
この指定は、ファイル・サイズを小さくできるものの、アプリのアップロードするには個別対応になり不便なため、Google Play 外でのテストや配布でのみ有用です。Google Play はサポートされているアーキテクチャをあなたに代わって処理してくれます。
:::
<CommandTabs
npm="npm run tauri android build -- --apk --split-per-abi"
yarn="yarn tauri android build --apk --split-per-abi"
pnpm="pnpm tauri android build --apk --split-per-abi"
deno="deno task tauri android build --apk --split-per-abi"
bun="bun tauri android build --apk --split-per-abi"
cargo="cargo tauri android build --apk --split-per-abi"
/>
### サポート対象の Android 最小バージョンの変更
Tauri アプリがサポートしてる最小の(最も古い) Android バージョンは「Android 7.0」(コード名 Nougat、SDK 24です。
古いシステムもサポートしつつ、新しい Android API を使用するテクニックのないわけではありません。
詳細については、[Android ドキュメント] を参照してください。
あなたのアプリをより新しい Android バージョンで実行しなければならない場合は、[`tauri.conf.json > bundle > android > minSdkVersion`] で「最小 SDK バージョン」の指定ができます:
```json title="tauri.conf.json" ins={4}
{
"bundle": {
"android": {
"minSdkVersion": 28
}
}
}
```
## アップロード
アプリのビルドと「Android App Bundle」ファイルの生成が完了したらこれらは `gen/android/app/build/outputs/bundle/universalRelease/app-universal-release.aab` にあります)、いよいよ新しいリリースを作成して Google Play Console にアップロードします。
初回のアップロードは、このウェブサイトで「アプリの署名」と「バンドル ID」が検証されるように、手作業で行なう必要があります。
Tauri は現在、Android リリースの作成プロセスを自動化する処理方法を提供していませんが(これには [Google Play Developer API] を利用する必要があります)、現在開発中です。
[Android ドキュメント]: https://developer.android.com/training/basics/supporting-devices/platforms#version-codes
[Google Play 公式ドキュメント]: https://developer.android.com/distribute?hl=ja
[Google Play Console]: https://play.google.com/console/developers?hl=ja
[コード署名]: /ja/distribute/sign/android/
[Google Play のリリース・チェックリスト]: https://play.google.com/console/about/guides/releasewithconfidence/
[`tauri.conf.json > version`]: /reference/config/#version
[Google Play Developer API]: https://developers.google.com/android-publisher/api-ref/rest
<div style="text-align: right;">
【※ この日本語版は、「Mar 29, 2025 英語版」に基づいています】
</div>

View File

@@ -0,0 +1,223 @@
---
title: macOS アプリケーション・バンドル
sidebar:
order: 1
i18nReady: true
---
import CommandTabs from '@components/CommandTabs.astro';
import TranslationNote from '@components/i18n/TranslationNote.astro';
「アプリケーション・バンドル」は、macOS で実行されるパッケージ形式です。これは、シンプルなディレクトリで、アプリケーションの実行ファイル、リソース、Info.plist ファイルや、macOS フレームワークといったその他のファイルなど、アプリケーションの正常動作に必要なすべてのものが含まれています。
アプリを「macOS アプリケーション・バンドル」としてパッケージ化するには、Tauri CLI を使用して、Mac コンピューター上で `tauri build` コマンドを実行します:
<CommandTabs
npm="npm run tauri build -- --bundles app"
yarn="yarn tauri build --bundles app"
pnpm="pnpm tauri build --bundles app"
deno="deno task tauri build --bundles app"
bun="bun tauri build --bundles app"
cargo="cargo tauri build --bundles app"
/>
## ファイル構造
「macOS アプリ・バンドル」は、以下の構造を持つディレクトリです:
```
├── <productName>.app
│ ├── Contents
│ │ ├── Info.plist
│ │ ├── ...additional files from [`tauri.conf.json > bundle > macOS > files`]
│ ├── MacOS
│ │ ├── <app-name> (app executable)
│ ├── Resources
│ │ ├── icon.icns (app icon)
│ │ ├── ...resources from [`tauri.conf.json > bundle > resources`]
│ ├── _CodeSignature (codesign information generated by Apple)
│ ├── Frameworks
│ ├── PlugIns
│ ├── SharedSupport
```
詳細については、[Bundle Structures 公式ドキュメント] を参照してください。
## ネイティブ設定
「アプリ・バンドル」は `Info.plist` ファイルによって設定されます。このファイルには、macOS によって読み取られる「設定値」や「アプリ ID」と共に「キーと値」のペアが含まれています。
Tauri は、アプリのバイナリ名、バージョン、バンドル ID、最小システム・バージョンなどの最も重要なプロパティ属性を自動的に設定します。
設定ファイルを拡張するには、`src-tauri` フォルダに `Info.plist` ファイルを作成し、必要なキー・ペアを追加します:
```xml title="src-tauri/Info.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>NSCameraUsageDescription</key>
<string>Request camera access for WebRTC</string>
<key>NSMicrophoneUsageDescription</key>
<string>Request microphone access for WebRTC</string>
</dict>
</plist>
```
この `Info.plist` ファイルは、Tauri CLI によって生成された値とマージされます。アプリケーション・バージョンなどのデフォルト値を上書きする場合は、他の設定値ととの競合や、予期しない動作を引き起こすかもしれませんので、注意してください。
詳細については、[Info.plist 公式ドキュメント] を参照してください。
### Info.plist の現地語対応
`Info.plist` ファイル自体は、単一の言語のみ(通常は英語)をサポートします。複数の言語をサポートしたい場合は、追加する言語ごとに `InfoPlist.strings` ファイルを作成できます。各ファイルは、それぞれの言語ごとの `lproj` ディレクトリ(これはアプリケーション・バンドル内の `Resources` ディレクトリにあります)に格納されます。
追加したファイルを自動的にバンドルするには、Tauri の「[resources](リソース)機能」を利用します。そのためには、プロジェクト内に以下のパターンに従ったファイル構造を作成してください:
```
├── src-tauri
│ ├── tauri.conf.json
│ ├── infoplist
│ │ ├── de.lproj
│ │ │ ├── InfoPlist.strings
│ │ ├── fr.lproj
│ │ │ ├── InfoPlist.strings
```
「`infoplist` ディレクトリ名」は、以下の「resources configリソース設定」で更新する場合には自由に命名できますが、「`lproj` ディレクトリ名」のほうは命名規則に従い「言語コード.lproj `<lang-code>.lproj`」の形、「文字列カタログ・ファイル」は `InfoPlist.strings`i と p は大文字)という名前でなければなりません。ほとんどの場合、「言語コード」は [BCP 47] に従った二文字のコードである必要があります。
<TranslationNote lang="ja">
**BCP 47** 「言語タグの規定」 「言語コード」二桁、小文字の例としては、deドイツ語、frフランス語、ja日本語、など 《参考》 本稿とは別件ですが、同一言語にたいして地域による差がある場合は「地域コード」二桁、通常大文字の付記も行なわれます。たとえば、 en-US英語米国、en-GB英語英国、zh-CN中国語中国、など。[ISO 639](https://ja.wikipedia.org/wiki/ISO_639-1コード一覧) (言語コード)、[ISO 3166-1](https://ja.wikipedia.org/wiki/ISO_3166-1)(国名コード)も参照。
</TranslationNote>
上記の `Info.plist` の例では、`de.lproj > InfoPlist.strings` ファイル(ドイツ語対応用)の内容は次のようになります:
```ini title="de.lproj/InfoPlist.strings"
NSCameraUsageDescription = "Kamera Zugriff wird benötigt für WebRTC Funktionalität";
NSMicrophoneUsageDescription = "Mikrofon Zugriff wird benötigt für WebRTC Funktionalität";
```
最後に、上述の「リソース機能」を使用して、Tauri がこれらのファイルを取得するようにします:
```json title="src-tauri/tauri.conf.json"
{
"bundle": {
"resources": {
"infoplist/**": "./"
}
}
}
```
## エンタイトルメント(資格の付与)
「エンタイトルメント」は、Apple の特別な設定の「キーと値」のペアで、アプリに特定のアクセス権を付与する権利や特権として働きます。たとえば、ユーザーのデフォルト電子メール・クライアントとしての動作させることや App Sandbox 機能の使用することなど、です。
「エンタイトルメント」はアプリケーションの署名時に適用されます。詳しくは [コード署名に関するドキュメント] をご覧ください。
アプリケーションに必要なエンタイトルメント権限を定義するには、「エンタイトルメント・ファイル」を作成し、それを使用するように Tauri を設定する必要があります。
1. `src-tauri` フォルダに `Entitlements.plist` ファイルを作成し、アプリに必要な「キーと値」のペアを設定します:
```xml title="src-tauri/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.app-sandbox</key>
<true/>
</dict>
</plist>
```
2. Entitlements.plist ファイルを使用するように Tauri を設定します:
```json title="tauri.conf.json" ins={4}
{
"bundle": {
"macOS": {
"entitlements": "./Entitlements.plist"
}
}
}
```
詳細については、[Entitlements 公式ドキュメント] を参照してください。
## 最小システム・バージョン
Tauri アプリケーションは、デフォルトで macOS 10.13 以降をサポートしています。あなたが、これより新しい macOS システムを必要とする API を使用しており、あなたのアプリ・バンドルでそのシステム要件の適用を必須としたい場合は、[`tauri.conf.json > bundle > macOS > minimumSystemVersion`] で最小バージョン番号を指定できます:
```json title="tauri.conf.json" ins={4}
{
"bundle": {
"macOS": {
"minimumSystemVersion": "12.0"
}
}
}
```
## macOS フレームワークを含める
アプリケーションの実行に追加の macOS フレームワークが必要な場合は、必要となるフレームワークを [`tauri.conf.json > bundle > macOS > frameworks`] の設定内にリストします。
この frameworks リストには、「システム・フレームワーク」または「カスタム・フレームワークと dylib ファイル」のどちらかを含めることができます。
```json title="tauri.conf.json" ins={4-8}
{
"bundle": {
"macOS": {
"frameworks": [
"CoreAudio",
"./libs/libmsodbcsql.18.dylib",
"./frameworks/MyApp.framework"
]
}
}
}
```
:::note
- システム・フレームワークを参照するには、絶対パスの代わりに、名前(拡張子部分「.framework」なしを使用します
- システム・フレームワークは、`$HOME/Library/Frameworks`、`/Library/Frameworks/`、または `/Network/Library/Frameworks/` のいずれかに存在する必要があります
- ローカル・フレームワークと dylib ファイルを参照するには、`src-tauri` ディレクトリを基準としたフレームワークへの完全なパスを使用する必要があります
:::
## カスタム・ファイルの追加
[`tauri.conf.json > bundle > macOS > files`] の設定を使用して、アプリケーション・バンドルにカスタム・ファイルを追加できます。これにより、`tauri.conf.json` ファイルを基準として、宛先パスがソースにマッピングされます。
カスタム・ファイルは `<Product-name> .app/contents` フォルダーに追加されます。
```json title="tauri.conf.json" ins={4-7}
{
"bundle": {
"macOS": {
"files": {
"embedded.provisionprofile": "./profile-name.provisionprofile",
"SharedSupport/docs.md": "./docs/index.md"
}
}
}
}
```
上記の例では、`profile-name.provisionprofile` ファイルが `<product-name>.app/Contents/embedded.provisionprofile` にコピーされ、`docs/index.md` ファイルが `<product-name>.app/Contents/SharedSupport/docs.md` にコピーされます。
[`tauri.conf.json > bundle > macOS > frameworks`]: /reference/config/#frameworks-1
[`tauri.conf.json > bundle > macOS > files`]: /reference/config/#files-2
[`tauri.conf.json > bundle > resources`]: /reference/config/#resources
[Bundle Structures 公式ドキュメント]: https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html
[Entitlements 公式ドキュメント]: https://developer.apple.com/documentation/bundleresources/entitlements
[Info.plist 公式ドキュメント]: https://developer.apple.com/documentation/bundleresources/information_property_list
[コード署名に関するドキュメント]: /ja/distribute/sign/macos/
[`tauri.conf.json > bundle > macOS > minimumSystemVersion`]: /reference/config/#minimumsystemversion
[resources]: /ja/develop/resources/
[BCP 47]: https://www.rfc-editor.org/rfc/bcp/bcp47.txt
<div style="text-align: right;">
【※ この日本語版は、「Mar 29, 2025 英語版」に基づいています】
</div>

View File

@@ -0,0 +1,129 @@
---
title: Microsoft Store
sidebar:
order: 1
i18nReady: true
---
import CommandTabs from '@components/CommandTabs.astro';
import TranslationNote from '@components/i18n/TranslationNote.astro';
「Microsoft Storeマイクロソフト・ストア」は、Microsoft 社が運営する Windows アプリ・ストアです。
この章では、Windows アプリを Microsoft Store に直接配布するための方法についてのみを詳しく説明します。
「Windows インストーラーによる配布オプションとその設定」の詳細については、[Windows インストーラー・ガイド] を参照してください。
## 必要事項
Microsoft Store でアプリを公開するためには、「Microsoft 開発者アカウント」を取得し、個人用または会社用の開発者として [登録] する必要があります。
<TranslationNote lang="ja">
**マイクロソフト・アカウント** 原文 Microsoft account ここで取得するアカウントは、アプリの公開や開発者ツールサービスへのアクセスを行なうための**アプリ開発用アカウント**で、Windows や Outlook/OneBox などの個人用のサービスを利用するための*認証用アカウント*ではありません。本稿では「開発者アカウント」と明示的に訳してあります。
</TranslationNote>
## アプリ・アイコンの変更
Tauri CLI は、Microsoft Store アイコンなどを含めて、あなたのアプリに必要なすべてのアイコンを生成できます。
ひとつの PNG または SVG の画像ソースから各種のアプリ・アイコンを生成するには、`tauri icon` コマンドを使用します:
<CommandTabs
npm="npm run tauri icon /path/to/app-icon.png"
yarn="yarn tauri icon /path/to/app-icon.png"
pnpm="pnpm tauri icon /path/to/app-icon.png"
deno="deno task tauri icon /path/to/app-icon.png"
bun="bun tauri icon /path/to/app-icon.png"
cargo="cargo tauri icon /path/to/app-icon.png"
/>
## 設定
Microsoft アカウントで開発者としての登録が完了したら、「[Apps and Games] (アプリとゲーム)」ページでアプリを登録する必要があります。
「`New Product`(新しい製品)」をクリックし、「`EXE or MSI app`EXE または MSI アプリ)」を選択して自分のアプリに一意の名前を予約します。
## ビルドとアップロード
現在のところ、Tauri は [EXE および MSI][Windows インストーラー・ガイド] インストーラーしか生成できないため、圧縮されていないアプリケーションにのみリンクする Microsoft Store アプリケーションを作成する必要があります。
Microsoft インストーラー内でリンクされているこのインストーラーは、「オフライン」で、「[自動更新に対応]」し、「[コード署名済]」でなければなりません。
アプリ公開の詳細については、Microsoft Store の [公式ドキュメント]を参照してください。
### オフライン・インストーラー
Microsoft Store を通じて配布される Windows インストーラーでは、[オフライン・インストーラー] の Webview2 インストール・オプションを使用する必要があります。
Microsoft Store 向けのバンドル作成時に、このインストーラー設定のみを適用するためには、別の Tauri 設定ファイルを定義します:
```json title="src-tauri/tauri.microsoftstore.conf.json"
{
"bundle": {
"windows": {
"webviewInstallMode": {
"type": "offlineInstaller"
}
}
}
}
```
次に、Microsoft Store 用の Tauri アプリをバンドルするときに、この設定ファイルをメインの設定ファイルとマージします:
<CommandTabs
npm="npm run tauri build -- --no-bundle
npm run tauri bundle -- --config src-tauri/tauri.microsoftstore.conf.json"
yarn="yarn tauri build --no-bundle
yarn tauri bundle --config src-tauri/tauri.microsoftstore.conf.json"
pnpm="pnpm tauri build --no-bundle
pnpm tauri bundle --config src-tauri/tauri.microsoftstore.conf.json"
deno="deno task tauri build --no-bundle
deno task tauri bundle --config src-tauri/tauri.microsoftstore.conf.json"
bun="bun tauri build --no-bundle
bun tauri bundle --config src-tauri/tauri.microsoftstore.conf.json"
cargo="cargo tauri build --no-bundle
cargo tauri bundle --config src-tauri/tauri.microsoftstore.conf.json"
/>
これは、アプリ・ストア以外で配布する Windows インストーラー用の別の設定を用意しながら、アプリを Microsoft ストアにアップロードするために CI/CD継続的開発テスト自動化を設定する場合に特に便利です。
### 発行書
あなたのアプリケーションの [発行者] 名は、アプリケーションの製品名と同一にはできません。
もし「発行者」値の設定が行なわれていない場合、Tauri は「バンドル ID」の二項目の部分からその値を取得します。
次の設定は、「発行者名」が「製品名」と一致してしまうため、無効です:
```json title=tauri.conf.json "example" "Example"
{
"productName": "Example",
"identifier": "com.example.app"
}
```
この場合、[発行者] 値を個別に定義すればこの齟齬を修正できます:
```json title=tauri.conf.json ins={4-6}
{
"productName": "Example",
"identifier": "com.example.app",
"bundle": {
"publisher": "Example Inc."
}
}
```
### アップロード
Microsoft Store 用の Windows インストーラーをビルドしたら、お好みの配布サービスにアップロードし、Microsoft Store ウェブサイトの自分のアプリケーション・ページにリンクを貼ります。
[Windows インストーラー・ガイド]: /ja/distribute/windows-installer/
[登録]: https://learn.microsoft.com/ja-jp/windows/apps/get-started/sign-up
[Apps and Games]: https://partner.microsoft.com/ja-jp/dashboard/apps-and-games/overview
[自動更新に対応]: /ja/plugin/updater/
[コード署名済]: /ja/distribute/sign/windows/
[オフライン・インストーラー]: /ja/distribute/windows-installer/#オフラインインストーラー
[公式ドキュメント]: https://learn.microsoft.com/ja-jp/windows/apps/publish/
[発行者]: /reference/config/#publisher
<div style="text-align: right;">
【※ この日本語版は、「Mar 29, 2025 英語版」に基づいています】
</div>

View File

@@ -0,0 +1,367 @@
---
title: RPM
sidebar:
order: 1
i18nReady: true
---
import CommandTabs from '@components/CommandTabs.astro';
import TranslationNote from '@components/i18n/TranslationNote.astro';
<TranslationNote lang="ja">
**RPM** Red Hat Package Manager 米 Red Hatレッドハット社が開発した、ソフトウェアのパッケージ管理システムの名称。
</TranslationNote>
# RPM のパッケージ化
:::note
この章のいくつかの項目はオプションです。そのような項目にはスクリプトの設定やその他の特定の手順が含まれます。自分の個々のニーズや必要性に応じて、指示内容を自由に調整してください。
:::
この章では、パッケージ情報の取得、スクリプトの設定、依存関係の設定、パッケージの署名など、RPM パッケージの配布と管理の方法について説明します。
## RPM パッケージの構成
Tauri では、スクリプトの追加、依存関係の設定、ライセンスの追加、カスタム・ファイルの追加などにより、RPM パッケージを構成できます。
設定可能なオプションの詳細については、[RpmConfig](https://v2.tauri.app/reference/config/#rpmconfig) を参照してください。
### パッケージの「インストール/削除」の前後にスクリプトを追加
「RPM パッケージ・マネージャー」を使用すると、パッケージのインストールまたは削除の前後にスクリプトを実行できます。例えば、これらのスクリプトを使用して、パッケージのインストール後にサービスを開始できます。
以下にスクリプトを追加する方法の事例を示します:
1. プロジェクトの `src-tauri` ディレクトリに `scripts` という名前のフォルダーを作成します。
```bash
mkdir src-tauri/scripts
```
2. フォルダー内にスクリプト・ファイルを作成します。
```bash
touch src-tauri/scripts/postinstall.sh \
touch src-tauri/scripts/preinstall.sh \
touch src-tauri/scripts/preremove.sh \
touch src-tauri/scripts/postremove.sh
```
ここで `/src-tauri/scripts` の中を見ると次のようになります:
```bash
ls src-tauri/scripts/
postinstall.sh postremove.sh preinstall.sh preremove.sh
```
3. 各スクリプトにコンテンツを追加します
```bash title="preinstall.sh"
echo "-------------"
echo "This is pre"
echo "Install Value: $1"
echo "Upgrade Value: $1"
echo "Uninstall Value: $1"
echo "-------------"
```
```bash title="postinstall.sh"
echo "-------------"
echo "This is post"
echo "Install Value: $1"
echo "Upgrade Value: $1"
echo "Uninstall Value: $1"
echo "-------------"
```
```bash title="preremove.sh"
echo "-------------"
echo "This is preun"
echo "Install Value: $1"
echo "Upgrade Value: $1"
echo "Uninstall Value: $1"
echo "-------------"
```
```bash title="postremove.sh"
echo "-------------"
echo "This is postun"
echo "Install Value: $1"
echo "Upgrade Value: $1"
echo "Uninstall Value: $1"
echo "-------------"
```
4. `tauri.conf.json` ファイルに各スクリプトを追加します
```json title="tauri.conf.json"
{
"bundle": {
"linux": {
"rpm": {
"epoch": 0,
"files": {},
"release": "1",
// ここにスクリプトを追加します
"preInstallScript": "/path/to/your/project/src-tauri/scripts/preinstall.sh",
"postInstallScript": "/path/to/your/project/src-tauri/scripts/postinstall.sh",
"preRemoveScript": "/path/to/your/project/src-tauri/scripts/preremove.sh",
"postRemoveScript": "/path/to/your/project/src-tauri/scripts/postremove.sh"
}
}
}
}
```
### Conflict、Provides、Depends、Files、Obsoletes、DesktopTemplate、Epoch の設定
- **conflict**(競合): 他のパッケージと競合する場合、そのパッケージのインストールを防止します。たとえば、あなたのアプリが依存している RPM パッケージを更新したときに、その新しいバージョンにアプリとの互換性がない場合などです。
- **provides**(提示): あなたのアプリケーションが提示する RPM 依存関係を一覧表示します。
- **depends**(依存): アプリケーションの実行に必要な RPM 依存関係を一覧表示します。
- **files**(ファイル): パッケージに含めるファイルを指定します。
- **obsoletes**(廃止): アプリケーションが廃止する RPM 依存関係を一覧表示します
:::note
このパッケージがインストールされている場合、「廃止」としてリストされているパッケージが存在する場合には自動的に削除されます。
:::
- **desktopTemplate**(デスクトップ・テンプレート): パッケージにカスタム・デスクトップ・ファイルを追加します。
- **epoch**(期別): バージョン番号に基づいて重み付けされた依存関係を定義します。
:::caution
「epoch」はパッケージ・マネージャーがパッケージのバージョンを比較する方法を変更するため、必要でない限り「epoch」を使用することはお勧めしません。
「epoch」についての詳細については、[RPM パッケージング ガイド](https://rpm-packaging-guide.github.io/#epoch-scriptlets-and-triggers)(英語版)を参照してください。
:::
上記のオプションを使用するには、`tauri.conf.json` に以下を追加します:
```json title="tauri.conf.json"
{
"bundle": {
"linux": {
"rpm": {
"postRemoveScript": "/path/to/your/project/src-tauri/scripts/postscript.sh",
"conflicts": ["oldLib.rpm"],
"depends": ["newLib.rpm"],
"obsoletes": ["veryoldLib.rpm"],
"provides": ["coolLib.rpm"],
"desktopTemplate": "/path/to/your/project/src-tauri/desktop-template.desktop"
}
}
}
}
```
### パッケージにライセンスを追加
パッケージにライセンスを追加するには、以下の内容を `src-tauri/cargo.toml` または `src-tauri/tauri.conf.json` ファイルに追加します:
```toml title="src-tauri/cargo.toml"
[package]
name = "tauri-app"
version = "0.0.0"
description = "A Tauri App"
authors = ["you"]
edition = "2021"
license = "MIT" # add the license here
# ... rest of the file
```
`src-tauri/tauri.conf.json` の場合は、
```json title="src-tauri/tauri.conf.json"
{
"bundle": {
"licenseFile": "../LICENSE", // ここにライセンス・ファイルへのパスを入力
"license": "MIT" // ここにライセンスを追加
}
}
```
## RPM パッケージのビルド
RPM パッケージをビルドするには、次のコマンドを使用します:
<CommandTabs
npm="npm run tauri build"
yarn="yarn tauri build"
pnpm="pnpm tauri build"
deno="deno task tauri build"
bun="bun tauri build"
cargo="cargo tauri build"
/>
このコマンドは、`src-tauri/target/release/bundle/rpm` ディレクトリに RPM パッケージをビルドします。
## RPM パッケージへの署名
Tauri では、ビルド・プロセス中に、自分のシステムにあるキーを使用してパッケージに署名できます。
これを行なうには、「GPG キー」を生成する必要があります。
<TranslationNote lang="ja">
**GPG キー** GNU Privacy Guard の略。自由ソフトウェア版暗号化ソフトウェアで生成される公開鍵。〔参考: [Wikipedia](https://ja.wikipedia.org/wiki/GNU_Privacy_Guard)、[GnuPG](https://www.gnupg.org/index.html)
</TranslationNote>
#### GPG キーの生成
GPG キーを生成するには、次のコマンドを使用します:
```bash
gpg --gen-key
```
指示に従ってキーを生成します。
キーが生成されたら、そのキーを環境変数に追加する必要があります。
これには、以下のコードを .bashrc または .zshrc ファイルに追加するか、「ターミナル」でエクスポートします:
```bash
export TAURI_SIGNING_RPM_KEY=$(cat /home/johndoe/my_super_private.key)
```
<TranslationNote lang="ja">
**johndoe** 上記パスの「/johndoe/」の部分には、自分の名前システム上のユーザー名が入ります。johndoeJohn Doeは、英語での「[名無しの権兵衛](https://ja.wikipedia.org/wiki/名無しの権兵衛)」と同様の言い方。以下、同様。
</TranslationNote>
キーのパスフレーズがある場合は、それも環境変数に追加できます:
```bash
export TAURI_SIGNING_RPM_KEY_PASSPHRASE=password
```
さあこれで、次のコマンドを使ってパッケージをビルドできます:
<CommandTabs
npm="npm run tauri build"
yarn="yarn tauri build"
pnpm="pnpm tauri build"
deno="deno task tauri build"
bun="bun tauri build"
cargo="cargo tauri build"
/>
### 署名の検証
:::note
この操作は、署名をローカルでテストする場合にのみ行なってください。
:::
署名を検証する前に、公開キーを作成して RPM データベースにインポートする必要があります:
```bash
gpg --export -a 'Tauri-App' > RPM-GPG-KEY-Tauri-App
```
```bash
sudo rpm --import RPM-GPG-KEY-Tauri-App
```
公開キーがインポートされたら、そのキーを利用するために `~/.rpmmacros` ファイルを編集します。
```bash title="~/.rpmmacros"
%_signature gpg
%_gpg_path /home/johndoe/.gnupg
%_gpg_name Tauri-App
%_gpgbin /usr/bin/gpg2
%__gpg_sign_cmd %{__gpg} \
gpg --force-v3-sigs --digest-algo=sha1 --batch --no-verbose --no-armor \
--passphrase-fd 3 --no-secmem-warning -u "%{_gpg_name}" \
-sbo %{__signature_filename} %{__plaintext_filename}
```
ようやくこれで、次のコマンドを使用してパッケージを検証できます:
```bash
rpm -v --checksig tauri-app-0.0.0-1.x86_64.rpm
```
## RPM パッケージのデバッグ
この項では、パッケージの内容を確認し、パッケージに関する情報を取得することで、RPM パッケージをデバッグする方法について説明します。
### パッケージに関する情報の取得
バージョン、リリース、アーキテクチャなどのパッケージに関する情報を取得するには、次のコマンドを使用します:
```bash
rpm -qip package_name.rpm
```
### パッケージに関する特定の情報を照会
たとえば、パッケージの名前やバージョン、リリース、アーキテクチャ、パッケージ・サイズなどを取得しようとする場合には、次のコマンドを使用します:
```bash
rpm -qp --queryformat '[%{NAME} %{VERSION} %{RELEASE} %{ARCH} %{SIZE}\n]' package_name.rpm
```
:::note
_`--queryformat`_ は、パッケージに関する特定の情報を取得するために使用できるフォーマット文字列です。
取得できる情報は、rpm -qip コマンドから取得されます。
:::
### パッケージ内容の確認
パッケージの内容を確認するには、次のコマンドを使用します:
```bash
rpm -qlp package_name.rpm
```
このコマンドは、パッケージに含まれるすべてのファイルを一覧表示します。
### スクリプトのデバッグ
「インストール/削除」の前/後のスクリプトをデバッグするには、次のコマンドを使用します:
```bash
rpm -qp --scripts package_name.rpm
```
このコマンドはスクリプトの内容を出力します。
### 依存関係の確認
パッケージの依存関係を確認するには、次のコマンドを使用します:
```bash
rpm -qp --requires package_name.rpm
```
### 特定のパッケージに依存するパッケージを表示
特定のパッケージに依存するパッケージを一覧表示するには、次のコマンドを使用します:
```bash
rpm -q --whatrequires package_name.rpm
```
### インストール問題のデバッグ
RPM パッケージのインストール中に問題が発生した場合は、`-vv` オプションvery verbose「非常に詳細な」を使用して詳細な出力を利用できます
```bash
rpm -ivvh package_name.rpm
```
あるいは、すでにインストール済のパッケージでは:
```bash
rpm -Uvvh package_name.rpm
```
を使用します。
<div style="text-align: right;">
【※ この日本語版は、「Mar 29, 2025 英語版」に基づいています】
</div>

View File

@@ -0,0 +1,185 @@
---
title: Snapcraft
sidebar:
order: 1
i18nReady: true
---
import { Tabs, TabItem, Card } from '@astrojs/starlight/components';
import TranslationNote from '@components/i18n/TranslationNote.astro';
<TranslationNote lang="ja">
**Snapcraft** スナップクラフト: アプリケーションを Snap 用に「Snapフォーマット」でパッケージングするツール。**Snap** は、英 Canonical 社が開発している Linux 用のディストリビューションに依存しないパッケージ管理システム(パッケージマネージャ)。〔[Wikipedia](<https://ja.wikipedia.org/wiki/Snap_(ソフトウェア)>)
</TranslationNote>
## 事前準備
**1. `snap` のインストール**
{/* prettier-ignore */}
<Tabs syncKey="distro">
<TabItem label="Debian">
```shell
sudo apt install snapd
```
</TabItem>
<TabItem label="Arch">
```shell
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/snapd.git
cd snapd
makepkg -si
sudo systemctl enable --now snapd.socket
sudo systemctl start snapd.socket
sudo systemctl enable --now snapd.apparmor.service
```
</TabItem>
<TabItem label="Fedora">
```shell
sudo dnf install snapd
# Enable classic snap support
sudo ln -s /var/lib/snapd/snap /snap
```
その後システムを再起動してください。
</TabItem>
</Tabs>
**2. 「base snap」のインストール**
<TranslationNote lang="ja">
**base snap** ベース・スナップ: 多くのアプリケーションに共通するライブラリと依存関係(ベースとなるコア機能)により一貫性と信頼性のある実行環境を提供するもの? 〔[参考](https://snapcraft.io/core)
</TranslationNote>
```shell
sudo snap install core22
```
**3. `snapcraft` のインストール**
```shell
sudo snap install snapcraft --classic
```
## 設定
1. UbuntuOne アカウントを作成します。
2. [Snapcraft](https://snapcraft.io) のウェブサイトにアクセスし、アプリ名を登録します。
3. プロジェクトのルートに snapcraft.yaml ファイルを作成します。
4. snapcraft.yaml ファイル内の名前を調整します。
```yaml
name: appname
base: core22
version: '0.1.0'
summary: Your summary # 79 文字の要約文《訳注》1 バイト文字で?)
description: |
Your description
grade: stable
confinement: strict
layout:
/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/webkit2gtk-4.1:
bind: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/webkit2gtk-4.1
apps:
appname:
command: usr/bin/appname
desktop: usr/share/applications/appname.desktop
extensions: [gnome]
#plugs:
# - network
# 必要なプラグをここに追加します。詳細については、https://snapcraft.io/docs/snapcraft-interfaces を参照してください。
# gnome 拡張機能には既に [desktop、desktop-legacy、gsettings、opengl、wayland、x11、mount-observe、calendar-service] が含まれています。
package-repositories:
- type: apt
components: [main]
suites: [noble]
key-id: 78E1918602959B9C59103100F1831DDAFC42E99D
url: http://ppa.launchpad.net/snappy-dev/snapcraft-daily/ubuntu
parts:
build-app:
plugin: dump
build-snaps:
- node/20/stable
- rustup/latest/stable
build-packages:
- libwebkit2gtk-4.1-dev
- build-essential
- curl
- wget
- file
- libxdo-dev
- libssl-dev
- libayatana-appindicator3-dev
- librsvg2-dev
- dpkg
stage-packages:
- libwebkit2gtk-4.1-0
- libayatana-appindicator3-1
source: .
override-build: |
set -eu
npm install
npm run tauri build -- --bundles deb
dpkg -x src-tauri/target/release/bundle/deb/*.deb $SNAPCRAFT_PART_INSTALL/
sed -i -e "s|Icon=appname|Icon=/usr/share/icons/hicolor/32x32/apps/appname.png|g" $SNAPCRAFT_PART_INSTALL/usr/share/applications/appname.desktop
```
### 項目説明
- `name` 変数には「アプリの名前」を定義します。これには、上記で登録した名前を設定する必要があります。
- `base` 変数には、使用している base snaps の「core名」を定義します。
- `version` 変数には「バージョン番号」を定義します。これは、ソース・リポジトリが変更されるたびに更新する必要があります。
- `apps` 欄では、ユーザーがあなたのアプリを実行できるように、デスクトップ・ファイルとバイナリ・ファイルを公開することができます。
- `package-repositories` 欄では、依存関係を充足するのに役立つパッケージ・リポジトリを追加できます。
- `build-packages`/`build-snaps` 欄では、スナップのビルド依存関係を定義します。
- `stage-packages`/`stage-snaps` 欄は、スナップのランタイム依存関係を定義します。
- `override-pull` 欄では、ソースが pull される前に一連のコマンドを実行します。
- `craftctl default` はデフォルトの pull コマンドを実行します。
- `organize` 欄では、バイナリ・ファイルとデスクトップ・ファイルが `apps` セクションに公開されるように、ファイルを適切なディレクトリに移動します。
<TranslationNote lang="ja">
**項目説明** 上記の説明内容は、snapcraft.yaml ファイルの項目に関する説明ですが、'override-pull' 以降の項目の入力箇所が不詳です。[snapcraft.yaml](https://documentation.ubuntu.com/snapcraft/stable/reference/project-file/snapcraft-yaml/#) なども参照してみてください。
</TranslationNote>
## ビルド
```sh
sudo snapcraft
```
## テスト
{/* TODO: This seems to be wrong */}
```shell
snap run your-app
```
## 手動でリリース
```shell
snapcraft login # UbuntuOneの認証情報でログインしてください
snapcraft upload --release=stable mysnap_latest_amd64.snap
```
## 自動的にビルド
1. アプリ開発者ページで、「`builds`」(ビルド)タブをクリックします。
2. 「`login with github`」github でログイン)をクリックします。
3. リポジトリの詳細を入力します。
<div style="text-align: right;">
【※ この日本語版は、「Feb 22, 2025 英語版」に基づいています】
</div>

View File

@@ -0,0 +1,695 @@
---
title: Windows インストーラー
sidebar:
order: 1
i18nReady: true
---
import CommandTabs from '@components/CommandTabs.astro';
import { Tabs, TabItem } from '@astrojs/starlight/components';
import TranslationNote from '@components/i18n/TranslationNote.astro';
Windows 用の Tauri アプリケーションは、[WiX Toolset v3] を用いて「Microsoft インストーラー」(`.msi` ファイル)として配布されるか、[NSIS] を使用して「セットアップ実行可能ファイル」(`-setup.exe` ファイル)として配布されます。
<TranslationNote lang="ja">
**WiX Toolset** Windows のインストーラー・パッケージをビルドするためのツールセット。上記の「v3」と「v4」は「deprecatedサポート終了、非推奨」になっており、2025.05 現在のバージョンは「v6」。[日本語版チュートリアル](https://wix-tutorial-ja.github.io/index.html) もありますが、残念ながら「v3」ベースです。WiX Toolset は現在 [FireGiant](https://docs.firegiant.com/wix/) 社にて管理されています。[Wix 最新バージョンはこちら](https://github.com/wixtoolset/wix/releases/)。
</TranslationNote>
<TranslationNote lang="ja">
**NSIS** Nullsoft Scriptable Install System の略。スクリプトベースの Windows アプリケーション・インストーラー作成ツール。
</TranslationNote>
「`.msi` インストーラー」は、クロス・コンパイルが機能しないため、 **Windows でのみ作成可能** であることに注意してください。
NSIS インストーラーのクロス・コンパイルは現在「試験運用中」です。
この章では、「Windows インストーラー」で利用可能なカスタマイズ・オプションに関する情報を提供します。
## ビルド
アプリをビルドして Windows インストーラーにバンドルするには、Tauri CLI を使用して、Windows コンピューター上で `tauri build` コマンドを実行します:
<CommandTabs
npm="npm run tauri build"
yarn="yarn tauri build"
pnpm="pnpm tauri build"
deno="deno task tauri build"
bun="bun tauri build"
cargo="cargo tauri build"
/>
### 試験運用中: Linux と macOS 上で Windows アプリをビルド
[NSIS] を使用すると、Linux および macOS ホスト上で Windows アプリをクロス・コンパイルできます。
ただし、これは現時点では非常に実験的なものと考えられており、すべてのシステムまたはすべてのプロジェクトで機能するわけではないことに注意してください。
したがって、ローカル仮想マシンVM, Virtual Machineまたは GitHub Actions などの CI ソリューション(継続的インテグレーション)が機能しない場合にのみ、最後の手段として使用する必要があります。
:::note
クロス・コンパイルされた Windows インストーラーに署名するには、「外部署名ツール」が必要です。
詳細については、[署名に関するドキュメント]を参照してください。
:::
Tauri は公式には MSVC Windows ターゲットのみをサポートしているため、セットアップは少し手間が掛かります。
<TranslationNote lang="ja">
**MSVC** Microsoft Visual C++。
</TranslationNote>
#### NSIS のインストール
<Tabs syncKey="OS">
<TabItem label="Linux">
一部の Linux ディストリビューションではリポジトリに NSIS が用意されています。たとえば、Ubuntu では次のコマンドを実行して NSIS をインストールできます:
```sh title=Ubuntu
sudo apt install nsis
```
しかし、他の多くのディストリビューションでは、NSIS を自分でコンパイルするか、ディストリビューションのバイナリ・パッケージに含まれていない「スタブとプラグイン」を手動でダウンロードする必要があります。
たとえば、Fedora はバイナリのみを提供し、スタブとプラグインは提供していません:
```sh title=Fedora
sudo dnf in mingw64-nsis
wget https://github.com/tauri-apps/binary-releases/releases/download/nsis-3/nsis-3.zip
unzip nsis-3.zip
sudo cp nsis-3.08/Stubs/* /usr/share/nsis/Stubs/
sudo cp -r nsis-3.08/Plugins/** /usr/share/nsis/Plugins/
```
</TabItem>
<TabItem label="macOS">
macOS で NSIS をインストールするには [Homebrew] が必要です:
```sh title=macOS
brew install nsis
```
</TabItem>
</Tabs>
#### LLVM と LLD リンカーのインストール
デフォルトの「Microsoft リンカー」は Windows でしか動作しないため、新しいリンカーもインストールする必要があります。
また、特にアプリ・アイコンの設定などに使用される「Windows リソース・ファイル」をコンパイルするには、LLVM プロジェクトの一部である `llvm-rc` バイナリも必要になります。
<TranslationNote lang="ja">
**LLVM** Low Level Virtual Machine低水準仮想機械。任意のプログラミング言語に対応可能なコンパイラ基盤[Wikipedia](https://ja.wikipedia.org/wiki/LLVM))。
</TranslationNote>
<Tabs syncKey="OS">
<TabItem label="Linux">
```sh title="Ubuntu"
sudo apt install lld llvm
```
Linux では、ビルド・スクリプトの一部として C/C++ の依存関係をコンパイルする依存関係を追加した場合は、`clang` パッケージもインストールする必要があります。
デフォルトの Tauri アプリでは、これは必要ありません。
</TabItem>
<TabItem label="macOS">
```sh title=macOS
brew install llvm
```
macOS では、インストール出力で提案されているように、`$PATH` に `/opt/homebrew/opt/llvm/bin` を追加する必要もあります。
</TabItem>
</Tabs>
#### the Windows Rust ターゲットのインストール
64 ビット Windows システムを「ターゲット」にビルドしていると仮定します:
```sh
rustup target add x86_64-pc-windows-msvc
```
#### `cargo-xwin` のインストール
Windows SDKソフトウェア開発キットを手作業で設定する代わりに、[`cargo-xwin`] を Tauri の「ランナー」として使用します:
```sh
cargo install --locked cargo-xwin
```
<TranslationNote lang="ja">
**ランナー** runner アプリケーションをビルドして実行するために使用するバイナリ。
</TranslationNote>
デフォルトでは、`cargo-xwin` は [Windows SDK](https://ja.wikipedia.org/wiki/Microsoft_Windows_SDK) をプロジェクトのローカル・フォルダーにダウンロードします。
あなたに複数のプロジェクトがあり、そのファイルを共有したい場合には、環境変数の `XWIN_CACHE_DIR` に、「Windows SDK」のダウンロード先として都合の良い場所へのパスを設定します。
#### アプリのビルド
あとは、「ランナー」と「ターゲット」を `tauri build` コマンドに追加するだけです:
<CommandTabs
npm="npm run tauri build -- --runner cargo-xwin --target x86_64-pc-windows-msvc"
yarn="yarn tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc"
pnpm="pnpm tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc"
deno="deno task tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc"
bun="bun tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc"
cargo="cargo tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc"
/>
ビルド結果は `target/x86_64-pc-windows-msvc/release/bundle/nsis/` に保存されます。
### 32-bit 用または ARM 向けのビルド
Tauri CLI は、デフォルトでは、使用している PC のアーキテクチャ用に実行可能ファイルをコンパイルします。
あなたが 64 ビット・マシンで開発しているのであれば、CLI は 64 ビット・アプリケーションを生成します。
もし **32 ビット** マシンをサポートする必要がある場合は、`--target` フラグを使用して、**異なる** [Rust ターゲット][platform support] に向けてアプリケーションをコンパイルできます:
<CommandTabs
npm="npm run tauri build -- --target i686-pc-windows-msvc"
yarn="yarn tauri build --target i686-pc-windows-msvc"
pnpm="pnpm tauri build --target i686-pc-windows-msvc"
deno="deno task tauri build --target i686-pc-windows-msvc"
bun="bun tauri build --target i686-pc-windows-msvc"
cargo="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 ターゲット」を追加し、上記の方法を使用してアプリをコンパイルします:
<CommandTabs
npm="npm run tauri build -- --target aarch64-pc-windows-msvc"
yarn="yarn tauri build --target aarch64-pc-windows-msvc"
pnpm="pnpm tauri build --target aarch64-pc-windows-msvc"
deno="deno task tauri build --target aarch64-pc-windows-msvc"
bun="bun tauri build --target aarch64-pc-windows-msvc"
cargo="cargo tauri build --target aarch64-pc-windows-msvc"
/>
:::info
なお、NSIS インストーラ自体は、ARM マシン上でもエミュレーションを介した x86 で実行されます。アプリ自体は「ネイティブ ARM64 バイナリ」になります。
:::
## Windows 7 のサポート
デフォルトでは、「Microsoft インストーラー」(`.msi`は、Windows 7 では動作しません。これは、WebView2 ブートストラップ・ローダーがインストールされていない場合はそれをダウンロードする必要があるからです(このブートストラップ・ローダーは、オペレーティング・システムで TLS 1.2 が有効になっていないと動作しない可能性があります)。
Tauri には、WebView2 ブートストラップ・ローダーを埋め込むオプションが含まれています後述の「WebView2 のインストール・オプション」内の [ブートストラップ・ローダーの埋め込み](#ブートストラップローダーの埋め込み) の項を参照してください)。
NSIS ベースのインストーラー(`-setup.exe`は、Windows 7 の `downloadBootstrapper` モードもサポートしています。
<TranslationNote lang="ja">
**ブートストラップ・ローダー** 原文 bootstrapperブートストラッパー アプリケーションのインストールの前に必須コンポーネントを確認・インストールするインストーラー。すべての必須コンポーネントがインストール済の場合は、そのままアプリケーション・インストーラーが起動します。本稿では、「ブートストラップ自己起動」との誤認を避けるために「ブートストラップ・ローダー」とローディング機能を重視した訳語にしています。[参考](https://learn.microsoft.com/ja-jp/visualstudio/deployment/creating-bootstrapper-packages?view=vs-2022)
</TranslationNote>
さらに、Windows 7 で Notification API を使用するには、Cargo 機能の「`windows7-compat`」を有効にする必要があります:
```toml title="Cargo.toml"
[dependencies]
tauri-plugin-notification = { version = "2.0.0", features = [ "windows7-compat" ] }
```
## FIPS 準拠
<TranslationNote lang="ja">
**FIPS** 連邦情報処理標準Federal Information Processing Standard 情報技術製品の暗号化モジュールの最小セキュリティ要件を定義する米国政府標準。[参考: Microsoft](https://learn.microsoft.com/ja-jp/compliance/regulatory/offering-fips-140-2)
</TranslationNote>
あなたのシステムにおいて、MSI バンドルが「FIPS に準拠している」必要がある場合は、`tauri build` を実行する前に「`TAURI_FIPS_COMPLIANT` 環境変数」を `true` に設定してください。
PowerShell では、現在のターミナル・セッションに対して以下のように設定します:
```powershell
$env:TAURI_FIPS_COMPLIANT="true"
```
## WebView2 のインストール・オプション
インストーラーは、デフォルトで WebView2 ブートストラップ・ローダーをダウンロードし、ランタイム・ソフトウェアがインストールされていない場合はブートストラップ・ローダーを実行します。
あるいは、代案として、ブートストラップ・ローダーを埋め込んだり、オフライン・インストーラーを埋め込んだり、「WebView2 ランタイム・修正バージョン」を使用することもできます。
これらの方法の比較については、次の表を参照してください:
| インストール 方法 | インターネット 接続 要否 | インストーラー 容量の増加 | 捕捉 |
| :-------------------------------------------------------------- | :----------------------- | ------------------------: | :-------------------------------------------------------------------------------------------------------------------- |
| [`downloadBootstrapper`](#ブートストラップローダのダウンロード) | Yes | 0MB | `Default` <br /> インストーラーのサイズは小さくなりますが、`.msi` ファイルによる Windows 7 の展開には推奨されません。 |
| [`embedBootstrapper`](#ブートストラップローダーの埋め込み) | Yes | ~1.8MB | Windows 7 での `.msi` インストーラーのサポートが向上しました。 |
| [`offlineInstaller`](#オフラインインストーラー) | No | ~127MB | WebView2 インストーラーを埋め込みます。オフライン環境用に推奨されます。 |
| [`fixedVersion`](#バージョンの修正) | No | ~180MB | WebView2 の修正バージョンを埋め込みます。 |
| [`skip`](#インストールの省略) | No | 0MB | ⚠️ 非推奨 <br /> Windows インストラーでは WebView2 をインストールしません。 |
:::info
Windows 102018 年 4 月リリース以降)および Windows 11 では、WebView2 ランタイムはオペレーティング・システムの一部として配布されています。
:::
### ブートストラップ・ローダのダウンロード
これは Windows インストーラーをビルドするためのデフォルト設定です。ブートストラップ・ローダーをダウンロードして実行します。
インターネット接続が必要ですが、インストーラーのサイズは小さくなります。
`.msi` インストーラー経由で Windows 7 に配布する場合は、この方法はお勧めしません。
```json title="tauri.conf.json"
{
"bundle": {
"windows": {
"webviewInstallMode": {
"type": "downloadBootstrapper"
}
}
}
}
```
### ブートストラップ・ローダーの埋め込み
WebView2 ブートストラップ・ローダーを埋め込むには、[webviewInstallMode] を `embedBootstrapper` に設定します。
これによりインストーラーのサイズが約 1.8 MB 増加しますが、Windows 7 システムとの互換性も向上します。
```json title="tauri.conf.json"
{
"bundle": {
"windows": {
"webviewInstallMode": {
"type": "embedBootstrapper"
}
}
}
}
```
### オフライン・インストーラー
WebView2 ブートストラップ・ローダー を埋め込むには、[webviewInstallMode] を `offlineInstaller` に設定します。
これによりインストーラーのサイズが約 127 MB 増加しますが、インターネット接続が利用できない場合でもアプリケーションをインストールできるようになります。
```json title="tauri.conf.json"
{
"bundle": {
"windows": {
"webviewInstallMode": {
"type": "offlineInstaller"
}
}
}
}
```
### バージョンの修正
システムが提供するランタイムを使用すると、WebView の脆弱性パッチが Windows によって管理されるため、セキュリティには好都合です。
各アプリケーションごとに WebView2 の配布方法を変えたい場合はリリース・パッチを自分で管理するとか、インターネット接続が利用できない環境用にアプリケーションを配布するとか、Tauri はランタイム・ファイルをバンドルできます。
:::caution
修正版 WebView2 ランタイム・バージョンの配布では、Windows インストーラーが約 180 MB 増加します。
:::
1. WebView2 の修正バージョン・ランタイムを [Microsoft のウェブサイト][download-webview2-runtime] からダウンロードします。
この例では、ダウンロードされたファイル名は `Microsoft.WebView2.FixedVersionRuntime.128.0.2739.42.x64.cab` です。
2. ファイルをコア・フォルダーに展開します:
```powershell
Expand .\Microsoft.WebView2.FixedVersionRuntime.128.0.2739.42.x64.cab -F:* ./src-tauri
```
3. `tauri.conf.json` で WebView2 ランタイム・パスを設定します:
```json title="tauri.conf.json"
{
"bundle": {
"windows": {
"webviewInstallMode": {
"type": "fixedRuntime",
"path": "./Microsoft.WebView2.FixedVersionRuntime.98.0.1108.50.x64/"
}
}
}
}
```
4. `tauri build` を実行して、修正版 WebView2 ランタイムを含む Windows インストーラーを生成します。
### インストールの省略
[webviewInstallMode] を `skip` に設定することで、インストーラーから WebView2 ランタイムのダウンロード・チェックを行なわないようにすることができます。
もしユーザーがランタイムをインストールしていない場合、あなたのアプリケーションは動作**しない**ことになります。
:::warning
ユーザーがランタイムをインストールしておらず、またインストールを行なわない場合、あなたのアプリケーションは動作**しません**。
:::
```json title="tauri.conf.json"
{
"bundle": {
"windows": {
"webviewInstallMode": {
"type": "skip"
}
}
}
}
```
## WiXインストーラーのカスタマイズ
カスタマイズ・オプションの全リストを知りたい場合は、[WiX configuration] を参照してください。
### インストーラー・テンプレート
`.msi` Windows インストーラー・パッケージは、[WiX Toolset v3] を使用してビルドされます。
現在、事前に定義された [Wix 設定][WiX configuration] とは別に、カスタム WiX ソース・コード(`.wxs` ファイル拡張子を持つ XML ファイル)または WiX フラグメントを使用して、以下のように「Wix Toolset」の設定を変更できます。
<TranslationNote lang="ja">
**Wix フラグメント** 原文 WiX fragment コンパイル時に他の WiX ソースへ組み込むことができる WiX ソース・コードのひとかたまりの「断片(フラグメント)」。フラグメントは、プログラム開発で使用するオブジェクト・ファイルやライブラリと同じように、他の製品のインストーラ・パッケージにリンクして組み込むことが出来ます。〔[参考](https://wix-tutorial-ja.github.io/ch04/04-fragments.html)
</TranslationNote>
#### インストーラー・コードをカスタム WiX ファイルで置き換え
Tauri によって定義された Windows インストーラー XML は、単純な Webview ベース・アプリケーションの一般的な使用方法で動作するように設定されています(「デフォルトの WiX テンプレート」は [こちら][default wix template] を参照)。
テンプレート変換エンジンの [handlebars] を使用しているので、Tauri CLI はインストーラーをあなたの `tauri.conf.json` 定義に従って「ブランド化(差別化)」できます。
まったく別のインストーラーが必要な場合は、[`tauri.bundle.windows.wix.template`] でカスタム・テンプレート・ファイルを設定できます。
<TranslationNote lang="ja">
**ブランド化(差別化)** 原文 the Tauri CLI can brand your installer ... : 文意不詳。
</TranslationNote>
#### WiX フラグメントによるインストーラーの拡張
[WiX フラグメント] は、WiX が提供するほぼすべてのものを設定可能なコンテナーです。
以下の事例では、二つのレジストリ・エントリを書き込む「フラグメント」を定義しています:
```xml
<?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` で参照します。
```json title="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 のテーブルのローカライズ]」にある一覧表の「言語−文化」の列で確認できます。
#### 単一言語用の WiX インストーラーのコンパイル
特定の言語のみを対象とするインストーラーを作成するには、`language` 値に言語の文字列を設定します:
```json title="tauri.conf.json"
{
"bundle": {
"windows": {
"wix": {
"language": "fr-FR"
}
}
}
}
```
#### リスト内の各言語用の WiX インストーラーのコンパイル
言語のリストをターゲットとするインストーラーをコンパイルするには、配列を使用します。
各言語用に特化したインストーラーが作成され、言語キーがサフィックス(接尾辞)として付けられます:
```json title="tauri.conf.json"
{
"bundle": {
"windows": {
"wix": {
"language": ["en-US", "pt-BR", "fr-FR"]
}
}
}
}
```
#### 各言語の WiX インストーラー文字列の設定
国際化用文字列を設定するために、言語ごとに設定オブジェクトを定義できます:
```json title="tauri.conf.json"
{
"bundle": {
"windows": {
"wix": {
"language": {
"en-US": null,
"pt-BR": {
"localePath": "./wix/locales/pt-BR.wxl"
}
}
}
}
}
}
```
`localePath` プロパティは、「言語−文化」を設定する XML、すなわち「言語ファイル」へのパスを定義します《訳注》以下の事例は「米語 en-US」設定なので、メッセージ表示が「英文」になります
```xml
<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>
```
:::note
`WixLocalization` エレメントの `Culture` フィールドは、設定された言語と一致する必要があります。
:::
現在、Tauri は次の「ロケール文字列」を参照します: `LaunchApp`、`DowngradeErrorMessage`、`PathEnvVarFeature`、および `InstallAppFeature`。
自分独自の文字列を定義し、`"!(loc.TheStringId)"` を使用してカスタム・テンプレートまたはフラグメントでその文字列を参照できます。
詳細については、「[WiX V3 ローカリゼーション・ドキュメント]」(注意:このリンクは V3 版です)を参照してください。
## NSIS インストーラーのカスタマイズ
カスタマイズ・オプションの全リストについては、[NSIS 設定] を参照してください。
### インストーラー・テンプレート
Tauri によって定義された NSIS インストーラーの `.nsi` スクリプトは、単純な WebView ベースのアプリケーションの一般的な使用方法で動作するように設定されています(「デフォルトの nsis テンプレート」は [こちら][default nsis template])。
テンプレート変換エンジンの [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` ファイルを作成し、必要なフックを定義するには:
```nsh
!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 を設定します:
```json title="tauri.conf.json"
{
"bundle": {
"windows": {
"nsis": {
"installerHooks": "./windows/hooks.nsi"
}
}
}
}
```
### インストール・モード
デフォルトでは、インストーラーは現在のユーザーに対してのみアプリケーションをインストールします。
このオプションの利点は、インストーラーの実行に管理者権限を必要としないことですが、アプリは `C:/Program Files` ではなく `%LOCALAPPDATA%` フォルダーにインストールされます。
アプリのインストールをシステム全体で利用できるようにするには(管理者権限が必要です)、[installMode] を「`perMachine`(マシン単位で)」に設定します:
```json title="tauri.conf.json"
{
"bundle": {
"windows": {
"nsis": {
"installMode": "perMachine"
}
}
}
}
```
あるいは、[installMode] を「`both`(両方)」に設定することで、アプリを現在のユーザーのみにインストールするか、システム全体にインストールするかをユーザーが選択できるようにすることもできます。
インストーラーを実行するには管理者権限が必要であることに注意してください。
詳細については、[NSISInstallerMode] を参照してください。
### 国際化(多言語対応)
NSIS インストーラーは多言語インストーラーですので、常に選択したすべての翻訳を含んだ単一のインストーラーが作成されます。
どの言語を含めるかは、[`tauri.bundle.windows.nsis.languages`](/reference/config/#languages) プロパティで指定します。
NSIS でサポートされている言語のリストは、[NSIS GitHub プロジェクト] から入手できます。
[Tauri 固有の翻訳] が必要なものがいくつかありますので、翻訳されていないテキストを見つけた場合は、[Tauri のメイン・リポジトリ] で 「Feature Request機能要求」を作成してください。
あるいは [カスタム翻訳ファイル](/reference/config/#customlanguagefiles)を提供することもできます。
<TranslationNote lang="ja">
**カスタム翻訳ファイル** 原文 custom translation files このリンク先タイトルは「カスタム翻訳ファイル」となっていますが、リンク先は「customLanguageFiles」カスタム**言語**ファイル)です。
</TranslationNote>
デフォルトでは、インストーラー言語の決定にはオペレーティング・システムのデフォルト言語が用いられます。
インストーラーの内容がレンダリングされる前に「言語セレクター」を表示するようにインストーラーを設定することもできます:
```json title="tauri.conf.json"
{
"bundle": {
"windows": {
"nsis": {
"displayLanguageSelector": true
}
}
}
}
```
### ミニマム Webview2 バージョン
あなたのアプリが、新しい Webview2 バージョンでのみ利用可能な機能(カスタム URI スキームなどを必要としている場合は、Windows インストーラーに「現在の Webview2 バージョンを確認し、ターゲット・バージョンと一致しない場合は Webview2 ブートストラップ・ローダーを実行する」ように指示できます。
```json title="tauri.conf.json"
{
"bundle": {
"windows": {
"nsis": {
"minimumWebview2Version": "110.0.1531.0"
}
}
}
}
```
[wix toolset v3]: https://wixtoolset.org/documentation/manual/v3/
[nsis]: https://nsis.sourceforge.io/Main_Page
[platform support]: https://doc.rust-lang.org/nightly/rustc/platform-support.html
[webviewinstallmode]: /reference/config/#webviewinstallmode
[download-webview2-runtime]: https://developer.microsoft.com/ja-jp/microsoft-edge/webview2/#download-section
[default wix template]: https://github.com/tauri-apps/tauri/blob/dev/crates/tauri-bundler/src/bundle/windows/msi/main.wxs
[default nsis template]: https://github.com/tauri-apps/tauri/blob/dev/crates/tauri-bundler/src/bundle/windows/nsis/installer.nsi
[handlebars]: https://docs.rs/handlebars/latest/handlebars/
[Homebrew]: https://brew.sh/ja/
[`tauri.bundle.windows.wix.template`]: /reference/config/#template-2
[`tauri.bundle.windows.nsis.template`]: /reference/config/#template-1
[wix フラグメント]: https://wixtoolset.org/documentation/manual/v3/xsd/wix/fragment.html
[`tauri.bundle.windows.wix.language`]: /reference/config/#language
[WiX V3 ローカリゼーション・ドキュメント]: https://wixtoolset.org/documentation/manual/v3/howtos/ui_and_localization/make_installer_localizable.html
[Error と ActionText のテーブルのローカライズ]: https://docs.microsoft.com/ja-jp/windows/win32/msi/localizing-the-error-and-actiontext-tables
[NSIS GitHub プロジェクト]: https://github.com/kichik/nsis/tree/9465c08046f00ccb6eda985abbdbf52c275c6c4d/Contrib/Language%20files
[Tauri 固有の翻訳]: https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-bundler/src/bundle/windows/nsis/languages
[Tauri のメイン・リポジトリ]: https://github.com/tauri-apps/tauri/issues/new?assignees=&labels=type%3A+feature+request&template=feature_request.yml&title=%5Bfeat%5D+
[署名に関するドキュメント]: /ja/distribute/sign/windows/
[WiX configuration]: /reference/config/#wixconfig
[NSIS configuration]: /reference/config/#nsisconfig
[installMode]: /reference/config/#installmode
[NSISInstallerMode]: /reference/config/#nsisinstallermode
<div style="text-align: right;">
【※ この日本語版は、「Mar 29, 2025 英語版」に基づいています】
</div>