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
|
|
@ -7,7 +7,8 @@
|
|||
"dev": "vite",
|
||||
"build": "tsc && vite build",
|
||||
"preview": "vite preview",
|
||||
"tauri": "node ./scripts/tauri-with-stub.mjs"
|
||||
"tauri": "node ./scripts/tauri-with-stub.mjs",
|
||||
"gen:icon": "node ./scripts/build-icon.mjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"@radix-ui/react-tabs": "^1.1.13",
|
||||
|
|
@ -21,6 +22,7 @@
|
|||
"react-dom": "^19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"png-to-ico": "^3.0.4",
|
||||
"@tauri-apps/cli": "^2",
|
||||
"@vitejs/plugin-react": "^4.3.4",
|
||||
"typescript": "~5.6.2",
|
||||
|
|
|
|||
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) })
|
||||
|
||||
BIN
apps/desktop/src-tauri/icons/Square310x310Logo.bmp
Normal file
BIN
apps/desktop/src-tauri/icons/Square310x310Logo.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 376 KiB |
|
|
@ -53,6 +53,7 @@
|
|||
"nsis": {
|
||||
"displayLanguageSelector": true,
|
||||
"installerIcon": "icons/icon.ico",
|
||||
"uninstallerIcon": "icons/icon.ico",
|
||||
"headerImage": "icons/nsis-header.bmp",
|
||||
"sidebarImage": "icons/nsis-sidebar.bmp",
|
||||
"installMode": "perMachine",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue