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",
|
"dev": "vite",
|
||||||
"build": "tsc && vite build",
|
"build": "tsc && vite build",
|
||||||
"preview": "vite preview",
|
"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": {
|
"dependencies": {
|
||||||
"@radix-ui/react-tabs": "^1.1.13",
|
"@radix-ui/react-tabs": "^1.1.13",
|
||||||
|
|
@ -21,6 +22,7 @@
|
||||||
"react-dom": "^19.0.0"
|
"react-dom": "^19.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"png-to-ico": "^3.0.4",
|
||||||
"@tauri-apps/cli": "^2",
|
"@tauri-apps/cli": "^2",
|
||||||
"@vitejs/plugin-react": "^4.3.4",
|
"@vitejs/plugin-react": "^4.3.4",
|
||||||
"typescript": "~5.6.2",
|
"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": {
|
"nsis": {
|
||||||
"displayLanguageSelector": true,
|
"displayLanguageSelector": true,
|
||||||
"installerIcon": "icons/icon.ico",
|
"installerIcon": "icons/icon.ico",
|
||||||
|
"uninstallerIcon": "icons/icon.ico",
|
||||||
"headerImage": "icons/nsis-header.bmp",
|
"headerImage": "icons/nsis-header.bmp",
|
||||||
"sidebarImage": "icons/nsis-sidebar.bmp",
|
"sidebarImage": "icons/nsis-sidebar.bmp",
|
||||||
"installMode": "perMachine",
|
"installMode": "perMachine",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue