- Implementa Windows Service (raven-service) para operacoes privilegiadas - Comunicacao via Named Pipes sem necessidade de UAC adicional - Adiciona single-instance para evitar multiplos icones na bandeja - Corrige todos os warnings do clippy (rustdesk, lib, usb_control, agent) - Remove fallback de elevacao para evitar UAC desnecessario - USB Policy e RustDesk provisioning agora usam o servico quando disponivel 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
97 lines
3.1 KiB
NSIS
97 lines
3.1 KiB
NSIS
; Hooks customizadas do instalador NSIS (Tauri)
|
|
;
|
|
; Objetivo:
|
|
; - Remover a marca "Nullsoft Install System" exibida no canto inferior esquerdo
|
|
; - Instalar o Raven Service para operacoes privilegiadas sem UAC
|
|
;
|
|
; Nota: o bundler do Tauri injeta estes macros no script principal do instalador.
|
|
|
|
BrandingText " "
|
|
|
|
!macro NSIS_HOOK_PREINSTALL
|
|
; Para qualquer instancia anterior do servico antes de atualizar
|
|
DetailPrint "Parando servicos anteriores..."
|
|
|
|
; Para o servico
|
|
nsExec::ExecToLog 'sc stop RavenService'
|
|
|
|
; Aguarda o servico parar completamente (ate 10 segundos)
|
|
nsExec::ExecToLog 'powershell -Command "$$i=0; while((Get-Service RavenService -ErrorAction SilentlyContinue).Status -eq \"Running\" -and $$i -lt 10){Start-Sleep 1;$$i++}"'
|
|
|
|
; Forca encerramento de processos remanescentes
|
|
nsExec::ExecToLog 'taskkill /F /IM raven-service.exe'
|
|
nsExec::ExecToLog 'taskkill /F /IM appsdesktop.exe'
|
|
|
|
; Aguarda liberacao dos arquivos
|
|
Sleep 2000
|
|
!macroend
|
|
|
|
!macro NSIS_HOOK_POSTINSTALL
|
|
; =========================================================================
|
|
; Instala e inicia o Raven Service
|
|
; =========================================================================
|
|
|
|
DetailPrint "Instalando Raven Service..."
|
|
|
|
; O servico ja esta em $INSTDIR (copiado como resource pelo Tauri)
|
|
; Registra o servico Windows
|
|
nsExec::ExecToLog '"$INSTDIR\raven-service.exe" install'
|
|
Pop $0
|
|
|
|
${If} $0 != 0
|
|
DetailPrint "Aviso: Falha ao registrar servico (codigo: $0)"
|
|
; Tenta remover e reinstalar
|
|
nsExec::ExecToLog '"$INSTDIR\raven-service.exe" uninstall'
|
|
Sleep 500
|
|
nsExec::ExecToLog '"$INSTDIR\raven-service.exe" install'
|
|
Pop $0
|
|
${EndIf}
|
|
|
|
; Inicia o servico
|
|
DetailPrint "Iniciando Raven Service..."
|
|
nsExec::ExecToLog 'sc start RavenService'
|
|
Pop $0
|
|
|
|
${If} $0 == 0
|
|
DetailPrint "Raven Service iniciado com sucesso!"
|
|
${Else}
|
|
DetailPrint "Aviso: Servico sera iniciado na proxima reinicializacao"
|
|
${EndIf}
|
|
|
|
; =========================================================================
|
|
; Verifica se RustDesk esta instalado
|
|
; Se nao estiver, o Raven Service instalara automaticamente no primeiro uso
|
|
; =========================================================================
|
|
|
|
IfFileExists "$PROGRAMFILES\RustDesk\rustdesk.exe" rustdesk_found rustdesk_not_found
|
|
|
|
rustdesk_not_found:
|
|
DetailPrint "RustDesk sera instalado automaticamente pelo Raven Service."
|
|
Goto rustdesk_done
|
|
|
|
rustdesk_found:
|
|
DetailPrint "RustDesk ja esta instalado."
|
|
|
|
rustdesk_done:
|
|
!macroend
|
|
|
|
!macro NSIS_HOOK_PREUNINSTALL
|
|
; =========================================================================
|
|
; Para e remove o Raven Service
|
|
; =========================================================================
|
|
|
|
DetailPrint "Parando Raven Service..."
|
|
nsExec::ExecToLog 'sc stop RavenService'
|
|
Sleep 1000
|
|
|
|
DetailPrint "Removendo Raven Service..."
|
|
nsExec::ExecToLog '"$INSTDIR\raven-service.exe" uninstall'
|
|
|
|
; Aguarda um pouco para garantir que o servico foi removido
|
|
Sleep 500
|
|
!macroend
|
|
|
|
!macro NSIS_HOOK_POSTUNINSTALL
|
|
; Nada adicional necessario
|
|
!macroend
|
|
|