diff --git a/src/app/utils/updateErrors.test.ts b/src/app/utils/updateErrors.test.ts index 81ea8569b..85574044d 100644 --- a/src/app/utils/updateErrors.test.ts +++ b/src/app/utils/updateErrors.test.ts @@ -69,9 +69,10 @@ test('install kinds: anything unknown keeps the in-app updater', async () => { test('package installs get their package manager’s command, not an Install button', async () => { const { packageUpdateHelp, isPackageManagedError } = await import('./updateErrors'); const pacman = packageUpdateHelp('pacman')!; + // Not `pacman -U `: that also wants `.sig`, which we don't publish. assert.equal( pacman.command, - 'sudo pacman -U https://code.lotusguild.org/LotusGuild/cinny-desktop/releases/download/latest/LotusChat-x86_64.pkg.tar.zst', + 'curl -LO https://code.lotusguild.org/LotusGuild/cinny-desktop/releases/download/latest/LotusChat-x86_64.pkg.tar.zst && sudo pacman -U ./LotusChat-x86_64.pkg.tar.zst', ); assert.match(pacman.url, /LotusChat-x86_64\.pkg\.tar\.zst$/); const deb = packageUpdateHelp('deb')!; diff --git a/src/app/utils/updateErrors.ts b/src/app/utils/updateErrors.ts index e36b8de31..e45201e22 100644 --- a/src/app/utils/updateErrors.ts +++ b/src/app/utils/updateErrors.ts @@ -67,7 +67,14 @@ export type PackageUpdateHelp = { command?: string; url: string; download: strin export const packageUpdateHelp = (kind: InstallKind): PackageUpdateHelp | undefined => { if (kind === 'pacman') { const url = `${RELEASE_DOWNLOAD}/LotusChat-x86_64.pkg.tar.zst`; - return { command: `sudo pacman -U ${url}`, url, download: 'Download package' }; + // Download first, then install the local file: `pacman -U ` also + // fetches `.sig` and fails without it (we don't sign packages), + // while a local file falls under LocalFileSigLevel (signature optional). + return { + command: `curl -LO ${url} && sudo pacman -U ./LotusChat-x86_64.pkg.tar.zst`, + url, + download: 'Download package', + }; } if (kind === 'deb') { const url = `${RELEASE_DOWNLOAD}/LotusChat-x86_64.deb`;