From c0e616c832dec21238b6711751c9fb9abeb3d48b Mon Sep 17 00:00:00 2001 From: ato lash <28973861+hal-shu-sato@users.noreply.github.com> Date: Sun, 30 Aug 2026 05:51:29 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix(renderer):=20=E6=9C=AA=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=82=B9=E3=83=88=E3=83=BC=E3=83=AB=E3=81=AE=E3=82=A2?= =?UTF-8?q?=E3=83=B3=E3=82=A4=E3=83=B3=E3=82=B9=E3=83=88=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E3=82=92=E3=80=8C=E5=AE=8C=E4=BA=86=E3=80=8D=E3=81=A8=E8=A8=80?= =?UTF-8?q?=E3=82=8F=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 未インストールのパッケージを選んでアンインストールを押せてしまい、しかも main 側は成功を返す。パッケージ版で実測すると「アンインストール完了」と 出る — 何も消していないのに完了と報告している。#2456(一括インストールが 失敗を無視して「インストール完了」と出す)と同じ種類。 ボタンを無効化するのではなく説明を出す。このボタン群は「押したら理由を 言う」方式で揃っており(選択なし・インストール先未設定も同じ形)、無効化に すると理由を言う場所が無くなるため。 弾くのは notInstalled だけ。手動インストール済みは記録に無いだけで ファイルは在るので、消す操作に意味がある。 --- src/renderer/main/packages/PackageActions.tsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/renderer/main/packages/PackageActions.tsx b/src/renderer/main/packages/PackageActions.tsx index 01a80040..e9241884 100644 --- a/src/renderer/main/packages/PackageActions.tsx +++ b/src/renderer/main/packages/PackageActions.tsx @@ -268,6 +268,18 @@ function PackageActions({ const uninstalledPackage = { ...selectedEntry.p }; + // 未インストールのまま押せてしまい、しかも main 側は成功を返す。 + // 実測すると「アンインストール完了」と出る — 何も消していないのに + // 完了と報告している(#2456 と同じ種類)。 + // 無効化ではなく説明を出すのは、このボタン群が「押したら理由を言う」 + // 方式で揃っているため(選択なし・インストール先未設定も同じ形)。 + // notInstalled だけを弾く。手動インストール済みは記録に無いだけで + // ファイルは在るので、消す操作に意味がある + if (uninstalledPackage.installationStatus === states.notInstalled) { + uninstall.finish('インストールされていません。', 'danger'); + return; + } + let result: Awaited< ReturnType >; From 1b46626ab717c71da0631c173e2c1a4286f0d0db Mon Sep 17 00:00:00 2001 From: ato lash <28973861+hal-shu-sato@users.noreply.github.com> Date: Sun, 30 Aug 2026 05:51:33 +0900 Subject: [PATCH 2/2] =?UTF-8?q?test(e2e):=20=E6=9C=AA=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=83=BC=E3=83=AB=E3=81=A7=E6=8A=BC=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=81=A8=E3=81=8D=E3=81=AE=E6=96=87=E8=A8=80=E3=82=92?= =?UTF-8?q?=E7=A2=BA=E3=81=8B=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit アンインストール後にもう一度押して、完了ではなく理由が出ることを見る。 --- e2e/install.spec.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/e2e/install.spec.ts b/e2e/install.spec.ts index bb9c4306..08fb76b8 100644 --- a/e2e/install.spec.ts +++ b/e2e/install.spec.ts @@ -140,4 +140,13 @@ test('dataURL の差し替えとパッケージのインストール・アンイ ); expect(existsSync(path.join(installationPath, 'dummy.auf'))).toBe(false); await expect(row).not.toContainText('インストール済み'); + + // 未インストールのまま押しても、何が起きたのか分かる文言が出る + // (修正前は何も消していないのに「アンインストール完了」と出ていた) + await row.click(); + await window.locator('#uninstall-package').click(); + await expect(window.locator('#uninstall-package')).toHaveText( + 'インストールされていません。', + { timeout: 30_000 }, + ); });