Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions e2e/install.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 },
);
});
12 changes: 12 additions & 0 deletions src/renderer/main/packages/PackageActions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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<typeof uninstallPackageMutation.mutateAsync>
>;
Expand Down