desktop(installer): add icon generation script and ensure installer/uninstaller use multi-res ICO\n\n- Add apps/desktop/scripts/build-icon.mjs using png-to-ico\n- Add script in apps/desktop/package.json\n- Set NSIS uninstallerIcon to icons/icon.ico\n\nUsage: pnpm -C apps/desktop install && pnpm -C apps/desktop gen:icon && pnpm -C apps/desktop tauri build --bundles nsis
This commit is contained in:
parent
f986fc667d
commit
29d5a07588
4 changed files with 42 additions and 1 deletions
38
apps/desktop/scripts/build-icon.mjs
Normal file
38
apps/desktop/scripts/build-icon.mjs
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
#!/usr/bin/env node
|
||||
import { promises as fs } from 'node:fs'
|
||||
import path from 'node:path'
|
||||
import pngToIco from 'png-to-ico'
|
||||
|
||||
async function fileExists(p) {
|
||||
try { await fs.access(p); return true } catch { return false }
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const root = path.resolve(process.cwd(), 'src-tauri', 'icons')
|
||||
const candidates = [
|
||||
'icon-512.png',
|
||||
'icon-256.png',
|
||||
'128x128@2x.png',
|
||||
'icon-128.png',
|
||||
'icon-64.png',
|
||||
'icon-32.png',
|
||||
]
|
||||
const sources = []
|
||||
for (const name of candidates) {
|
||||
const p = path.join(root, name)
|
||||
if (await fileExists(p)) sources.push(p)
|
||||
}
|
||||
if (sources.length === 0) {
|
||||
console.error('[gen:icon] Nenhuma imagem base encontrada em src-tauri/icons')
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
console.log('[gen:icon] Gerando icon.ico a partir de:', sources.map((s) => path.basename(s)).join(', '))
|
||||
const buffer = await pngToIco(sources)
|
||||
const outPath = path.join(root, 'icon.ico')
|
||||
await fs.writeFile(outPath, buffer)
|
||||
console.log('[gen:icon] Escrito:', outPath)
|
||||
}
|
||||
|
||||
main().catch((err) => { console.error(err); process.exit(1) })
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue