build: add Windows portable EXE packaging scripts

- scripts/build-icon.js — generates icon.png/ico/tray-icon.png
  from pure Node.js (no dependencies, zlib + PNG/ICO encoder)
- scripts/fix-wincodeSign.js — pre-populates electron-builder
  winCodeSign cache by extracting the .7z while ignoring macOS
  symlinks (which fail on Windows without SeCreateSymbolicLink)
- package.json: add fix-wincodeSign script, cross-env, electron-builder
  downgraded to v24 (stable portable target), CSC signing disabled

Build: npm run build:win → dist-electron/SRT-Streamer-Portable-1.0.0.exe

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
admin
2026-04-16 01:12:33 +03:00
parent 1f7dbc2a7d
commit bc65186637
5 changed files with 531 additions and 1399 deletions
+31 -10
View File
@@ -5,10 +5,12 @@
"main": "electron/main.js",
"scripts": {
"dev": "concurrently \"vite\" \"wait-on http://localhost:5173 && electron .\"",
"build": "vite build && electron-builder",
"build:win": "vite build && electron-builder --win",
"build:mac": "vite build && electron-builder --mac",
"build:linux": "vite build && electron-builder --linux",
"icon": "node scripts/build-icon.js",
"build": "node scripts/build-icon.js && vite build && electron-builder",
"fix-wincodeSign": "node scripts/fix-wincodeSign.js",
"build:win": "node scripts/build-icon.js && vite build && node scripts/fix-wincodeSign.js && cross-env CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder --win portable",
"build:mac": "node scripts/build-icon.js && vite build && electron-builder --mac",
"build:linux": "node scripts/build-icon.js && vite build && electron-builder --linux",
"preview": "vite preview"
},
"dependencies": {
@@ -17,8 +19,9 @@
"devDependencies": {
"@vitejs/plugin-react": "^4.3.4",
"concurrently": "^9.1.2",
"cross-env": "^7.0.3",
"electron": "^33.4.0",
"electron-builder": "^25.1.8",
"electron-builder": "^24.13.3",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"vite": "^6.0.7",
@@ -28,24 +31,42 @@
"build": {
"appId": "com.srtstreamer.app",
"productName": "SRT Streamer",
"copyright": "SRT Streamer",
"directories": {
"output": "dist-electron"
"output": "dist-electron",
"buildResources": "assets"
},
"files": [
"dist/**/*",
"electron/**/*",
"assets/**/*"
"assets/**/*",
"package.json"
],
"extraResources": [
{
"from": "ffmpeg-bin/",
"to": "ffmpeg-bin/",
"filter": ["**/*"]
"filter": [
"**/*"
]
}
],
"asar": true,
"win": {
"target": "portable",
"icon": "assets/icon.ico"
"target": [
{
"target": "portable",
"arch": [
"x64"
]
}
],
"icon": "assets/icon.ico",
"artifactName": "SRT-Streamer-Portable-${version}.exe",
"requestedExecutionLevel": "asInvoker",
"sign": null,
"signingHashAlgorithms": null,
"certificateFile": null
},
"mac": {
"target": "dmg",