VerentiaIP es una aplicación de escritorio construida con Electron que proporciona un servidor local para obtener la dirección IP de la máquina así como las funcionalidades de conectividad con balanzas. La aplicación incluye un sistema de tray, splash screen y auto-actualización automática desde GitHub Releases.
- 🌐 Servidor HTTP/WebSocket: Expone la IP local en
http://localhost:3000 - 🔄 Auto-actualización: Sistema automático de actualizaciones desde GitHub
- 🖥️ Tray System: Aplicación que vive en la bandeja del sistema
- 🚀 Auto-inicio: Se ejecuta automáticamente al iniciar Windows
- 📡 API REST: Endpoint
/ippara obtener la IP programáticamente - 🔒 Single Instance: Previene múltiples instancias ejecutándose
02384_SGA_Electron/
├── main.js # Proceso principal de Electron
├── preload.js # Script de preload para seguridad
├── index.html # Interfaz principal (no se usa actualmente)
├── splash.html # Pantalla de splash al iniciar
├── package.json # Configuración del proyecto y dependencias
├── forge.config.js # Configuración de Electron Forge
├── icon.ico/.png # Iconos de la aplicación
├── logo-fedefarma.png # Logo para splash screen
├── .env # Variables de entorno (crear manualmente)
└── README.md # Documentación
- electron: Framework principal para aplicaciones de escritorio
- express: Servidor HTTP
- socket.io: WebSockets para comunicación en tiempo real
- cors: Manejo de CORS para el servidor web
- electron-log: Sistema de logging para producción
- update-electron-app: Sistema de auto-actualización
- electron-squirrel-startup: Manejo de instalación en Windows
- @electron-forge: Suite completa para empaquetar y distribuir
- @electron/fuses: Configuraciones de seguridad
- dotenv: Manejo de variables de entorno
git clone https://github.com/labelgrupnetworks/02384_SGA_Electron.git
cd 02384_SGA_Electronnpm install.env en la raíz del proyecto:
# .env
GITHUB_TOKEN=tu_github_token_aquiPara obtener el token de GitHub:
- Ve a GitHub Settings → Developer settings → Personal access tokens
- Genera un nuevo token con permisos de
repo - Copia el token al archivo
.env
📝 ANTES DE COMPILAR: Siempre actualiza la versión en package.json:
{
"version": "1.0.24" // Incrementar antes de cada build
}npm startnpm run packagenpm run makenpm run publish- Actualizar versión en
package.json - Verificar que el archivo
.envexiste conGITHUB_TOKEN - Hacer commit de todos los cambios
npm run makeEsto genera:
out/VerentiaIP-win32-x64/- Aplicación empaquetadaout/make/squirrel.windows/x64/VerentiaIP-Setup.exe- Instaladorout/make/squirrel.windows/x64/RELEASES- Archivo de releasesout/make/squirrel.windows/x64/*.nupkg- Paquete de actualización
npm run publishEsto:
- Crea un nuevo release en GitHub
- Sube automáticamente todos los archivos necesarios
- Configura el sistema de auto-actualización
La aplicación utiliza update-electron-app con el servicio público de Electron:
updateElectronApp({
updateInterval: '2 hours',
notifyUser: true,
updateSource: {
type: UpdateSourceType.ElectronPublicUpdateService,
repo: 'labelgrupnetworks/02384_SGA_Electron'
}
});- Click derecho en el tray → "📊 Estado del actualizador"
- Logs detallados en DevTools (disponible desde el tray)
GET http://localhost:3000/ipRespuesta:
{
"ip": "192.168.1.100"
}POST http://localhost:3000/scale-command// Conectar al socket
const socket = io('http://localhost:3000');
// Obtener IP
socket.emit('get-ip');
socket.on('ip-address', (data) => {
console.log('IP:', data.ip);
});Edita main.js:
const PORT = 3001; // Cambiar de 3000 a otro puertoupdateElectronApp({
updateInterval: '4 hours', // Cambiar intervalo
// ...
});app.setLoginItemSettings({
openAtLogin: false, // Deshabilitar auto-inicio
path: app.getPath("exe"),
});Si el puerto 3000 está ocupado, la aplicación intentará un puerto alternativo automáticamente.
- Verificar que el repositorio sea público
- Confirmar que el
GITHUB_TOKENtiene permisos correctos - Revisar logs en DevTools (Tray → "🛠️ Abrir DevTools")
Solo una instancia puede ejecutarse. Para debugging, termina el proceso desde el Task Manager.
- Actualizar versión en
package.json - Verificar archivo
.envconGITHUB_TOKEN - Commit todos los cambios
- Ejecutar
npm run make - Probar el instalador generado
- Ejecutar
npm run publish - Verificar release en GitHub
- Probar auto-actualización desde versión anterior
- Fork el proyecto
- Crear feature branch (
git checkout -b feature/nueva-funcionalidad) - Commit cambios (
git commit -am 'Agregar nueva funcionalidad') - Push al branch (
git push origin feature/nueva-funcionalidad) - Crear Pull Request
Este proyecto es propiedad de LabelGrup Networks.
Para soporte técnico, contactar: ehernandez@labelgrup.com