Skip to content

Electron 自動アップデート実装ガイド

(ソースコード非公開・配布用パブリックリポジトリ分離構成)

このガイドは、ソースコードはPrivateリポジトリで管理しつつ、100MBを超えるインストーラー無料で**Publicリポジトリ(Releases)**にて配布・自動更新するための手順書です。


前提・構成図

  • 開発リポジトリ (Private): ソースコードがある場所。ここでGitHub Actionsを動かす。
  • 配布リポジトリ (Public): 空っぽのリポジトリ。ビルドされたインストーラーだけがここに置かれる。

手順 1: 配布用リポジトリの作成

GitHub上で、インストーラーを置くためのPublicリポジトリを新規作成します。

  1. GitHubで New Repository を作成。
  2. Repository name: my-app-releases (任意の名前)
  3. Public / Private: Public を選択

    重要: ここをPublicにしないと、無料ユーザーはインストーラーをダウンロードできず、自動更新が動きません。

  4. 「Initialize this repository with a README」にチェックを入れて作成。

手順 2: package.json の設定

開発リポジトリ(ソースコード側)の package.json に、electron-builder の設定を追記します。 自分のリポジトリではなく、手順1で作った配布用リポジトリを指定するのがポイントです。

json
{
  "name": "your-app-name",
  "version": "1.0.0",
  "build": {
    "appId": "com.yourname.yourapp",
    "publish": {
      "provider": "github",
      "owner": "YourGitHubUserName", 
      "repo": "my-app-releases" 
    },
    "win": {
      "target": "nsis"
    },
    "mac": {
      "target": "default"
    }
  }
}


---

### 手順 3: GitHub Access Token (PAT) の取得と設定

GitHub Actions(Private側)から、配布リポジトリ(Public側)へファイルをアップロードするために、強力な権限を持つトークンが必要です。
#### 3-1. トークンの発行
1. GitHubの右上のアイコン → **Settings**
2. 左メニュー最下部 **Developer settings** → **Personal access tokens** → **Tokens (classic)**
3. **Generate new token (classic)** をクリック。
4. **Note:** 「Electron Auto Update」など分かりやすい名前を入力。
5. **Expiration:** 期限を設定(無期限にするか、定期的に更新するかはお任せします)。
6. **Select scopes:** **`repo`** (Full control of private repositories) にチェックを入れる。
7. **Generate token** を押し、表示されたトークン(`ghp_...`)をコピーする。
   > **注意:** この画面を閉じると二度と表示されないので必ずコピーしてください。

#### 3-2. 開発リポジトリへの登録
1. **開発用Privateリポジトリ**のページを開く。
2. **Settings** → **Secrets and variables** → **Actions**
3. **New repository secret** をクリック。
4. **Name:** `GH_TOKEN`
5. **Secret:** さっきコピーしたトークンを貼り付け。
6. **Add secret** で保存。

---

### 手順 4: GitHub Actions の作成

開発リポジトリの `.github/workflows/release.yml` に以下のファイルを作成します。
`v1.0.0` などのタグがPushされた時だけビルドが走ります。

```yaml
name: Build and Release

on:
  push:
    tags:
      - 'v*' # "v1.0.0" などのタグが打たれた時のみ実行

jobs:
  release:
    runs-on: windows-latest # Mac向けなら macos-latest

    permissions:
      contents: write

    steps:
      - name: Check out git repository
        uses: actions/checkout@v4

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      - name: Install Dependencies
        run: npm ci

      # ビルドとリリース実行
      # GH_TOKENを使って、package.jsonで指定した「配布用レポ」にアップロードします
      - name: Build & Release
        env:
          GH_TOKEN: ${{ secrets.GH_TOKEN }}
        run: npm run electron-builder -- --publish always