Problema
Implantar o RustDesk em um ambiente corporativo exige mais do que enviar um MSI aos endpoints Windows.
O cliente precisa receber os endereços aprovados de HBBS, HBBR e API da infraestrutura self-hosted, a chave pública do servidor, configuração funcional para contextos de serviço e usuário, logs operacionais e uma regra de detecção que comprove mais do que a existência do executável.
A instalação normalmente é executada pela Intune Management Extension como SYSTEM, enquanto o serviço Windows e os usuários interativos podem ler configurações de perfis diferentes. Um código de sucesso do MSI não garante que o serviço foi iniciado, que o servidor esperado foi gravado ou que o Intune consiga detectar o estado pretendido.
Solução
RustDeskIntuneDeployment organiza a implantação em três fluxos PowerShell:
install.ps1executa a instalação silenciosa do MSI, distribui a configuração, valida os arquivos, provisiona o serviço, registra logs e cria um marcador de conclusão;detect.ps1valida o executável, uma configuração de máquina com o servidor esperado e o marcador de implantação;uninstall.ps1localiza o produto MSI instalado e solicita sua remoção silenciosa.
O diretório resultante é convertido em um aplicativo Win32 do Microsoft Intune com o Microsoft Win32 Content Prep Tool.
A infraestrutura do servidor RustDesk permanece fora do escopo. O pacote configura os endpoints para utilizar um serviço aprovado; ele não implanta HBBS, HBBR, API, console web, identidades de operadores ou autorização no servidor.
Fluxo de instalação
O instalador é executado como SYSTEM e segue etapas explícitas:
- cria diretórios organizacionais para logs e marcadores;
- interrompe processos e serviço do RustDesk quando necessário;
- seleciona o MSI pretendido e executa
msiexecsilenciosamente; - aceita os códigos de sucesso
0e3010do Windows Installer; - localiza o executável instalado;
- gera
RustDesk2.tomlcom os valores revisados; - grava a configuração nos contextos de máquina, serviço, usuário padrão e usuários existentes;
- valida se pelo menos um arquivo contém o host esperado;
- instala ou inicia o serviço RustDesk;
- cria a evidência final utilizada pela detecção do Intune.
Qualquer código inesperado do MSI ou ausência de configuração validada interrompe o fluxo antes da criação do marcador final.
Configuração em múltiplos contextos
A configuração é gravada no perfil de LocalService, no perfil de sistema utilizado por processos SYSTEM, em C:\ProgramData\RustDesk\config, no perfil de usuário padrão do Windows e nos perfis existentes descobertos pela chave ProfileList do Registro.
A cópia no perfil padrão atende usuários que entrarem depois da implantação. Os perfis já existentes recebem a configuração durante a instalação.
O script valida o conteúdo final em vez de assumir que uma operação de escrita sem exceção produziu a configuração correta.
Semântica da detecção
O script personalizado do Intune exige três condições:
- um executável RustDesk em caminho reconhecido;
- pelo menos um
RustDesk2.tomlde máquina contendo o servidor esperado; - o marcador organizacional de implantação.
Essa abordagem representa o estado do pacote, e não um monitoramento completo de saúde. Ela não comprova atualmente a disponibilidade do serviço, todos os valores de porta, a chave pública, todas as cópias de perfil, conectividade ponta a ponta ou autorização dos operadores.
Decisões de segurança
Software de suporte remoto possui impacto privilegiado no endpoint. O projeto exige:
- MSI confiável com assinatura, versão, hash SHA-256, origem e termos de redistribuição revisados;
- endereços, portas e chave pública revisados antes do empacotamento;
- inclusão somente da chave pública do servidor RustDesk;
- exclusão da chave privada e de credenciais de produção;
- implantação iniciada em anel piloto;
- acesso restrito e monitorado à infraestrutura self-hosted;
- sanitização de logs, marcadores, screenshots e documentação;
- separação entre autorização para implantar o cliente e autorização para iniciar sessões remotas.
Existe um bloco opcional de senha permanente no instalador, mas ele permanece desabilitado. O projeto desencoraja incluir uma senha compartilhada em texto simples em um pacote amplamente distribuído.
Logs e evidências operacionais
A implantação produz um log de orquestração em PowerShell e um log detalhado do Windows Installer. Depois que todas as etapas são aprovadas, um marcador registra servidor, caminho do executável, versão detectada e locais de configuração validados.
O marcador é removido no início de uma reinstalação ou reparo, impedindo que evidências antigas façam uma implantação incompleta parecer em conformidade.
Limitações conhecidas
O script atual de desinstalação consulta Win32_Product, o que pode iniciar verificações de consistência do Windows Installer. A evolução planejada é utilizar as chaves de desinstalação do Registro.
A remoção concentra-se no produto MSI e não elimina automaticamente todos os arquivos de configuração, logs, marcadores ou registros no servidor. A detecção também não reconcilia continuamente cada valor TOML.
Estado atual
O repositório contém scripts de instalação, detecção e remoção; documentação bilíngue de arquitetura, configuração e Intune; orientação de segurança; changelog; licença MIT para a automação original; e espaços reservados para evidências sanitizadas do piloto.
Hostnames, portas, chaves públicas, credenciais, dados do tenant e identificadores organizacionais permanecem fora da configuração pública.
O que o projeto demonstra
RustDeskIntuneDeployment demonstra implantação de endpoints como um problema de estado, contexto e confiança. Ele transforma um instalador de fornecedor em um aplicativo Win32 controlado, com configuração em múltiplos perfis, validação após a escrita, provisionamento do serviço, logs, evidências explícitas, detecção personalizada, rollout progressivo e limites de segurança documentados.