UltraViewer no Linux via Wine — (por que não funciona)

Pessoal,
resolvi documentar aqui tudo o que tentei para rodar o UltraViewer no Linux via Wine, porque vejo muita gente perguntando e as respostas costumam ficar no “funciona / não funciona” sem explicar o porquê.
Já adianto o resumo:
Conclusão:
O UltraViewer não funciona no Linux via Wine e não é por falta de dependência ou configuração.
O bloqueio é estrutural, porque o software depende de Windows Services reais, algo que o Wine não implementa.
Abaixo está o caminho completo até chegar a essa conclusão.
:puzzle_piece: Ambiente usado
Linux (base Ubuntu / Linux Mint)
Wine 9.0
Winetricks 20240105
Arquitetura x86_64
Prefixos Wine limpos e isolados (testei mais de um)
:small_blue_diamond: 1) Tentativa direta (Wine “normal”)
Comecei pelo básico:
wine UltraViewer_setup_6.6.124_en.exe
Problemas encontrados:
ExtractTemporaryFile: The file was not found
Erros relacionados a COM / RPC
O instalador não concluía
Isso já indicava que o instalador não era algo simples.
:small_blue_diamond: 2) Identificação e extração do instalador
Analisei o executável e identifiquei que ele usa Inno Setup:
strings UltraViewer_setup_6.6.124_en.exe | grep -i inno
Extraí manualmente:
innoextract UltraViewer_setup_6.6.124_en.exe
Isso permitiu acessar diretamente os binários reais do programa.
:small_blue_diamond: 3) Análise dos binários extraídos
Arquivos principais encontrados:
UltraViewer_Desktop.exe
UltraViewer_Service.exe
uv_x64.exe
Várias DLLs relacionadas a .NET
Verificando os executáveis:
file UltraViewer_Desktop.exe
file UltraViewer_Service.exe
file uv_x64.exe
Resultado:
UltraViewer_Service.exe: Mono/.NET assembly (IL-only)
uv_x64.exe: Mono/.NET assembly 64-bit
O Desktop é basicamente só a interface gráfica
:backhand_index_pointing_right: Aqui já ficou claro que o UltraViewer depende fortemente de .NET.
:small_blue_diamond: 4) Resolvendo o runtime (.NET)
Instalei o runtime necessário dentro do prefixo Wine:
Testei Wine-Mono (builtin)
Forcei Mono via winetricks
Instalei .NET Framework 4.8 via winetricks
winetricks dotnet48
Depois disso:
mscoree.dll passou a existir
Os erros de runtime desapareceram
O executável passou a iniciar
Ou seja: não era mais problema de dependência.
:small_blue_diamond: 5) Onde tudo quebra de vez (serviço Windows)
Ao executar o serviço principal:
wine UltraViewer_Service.exe
O erro retornado foi:
Windows Service Start Failure
A Windows Service must first be installed and then started
Analisando os logs, o programa tenta:
CreateService
StartService
Comunicação via RPC / Service Control Manager
:backhand_index_pointing_right: Esse é o ponto final.
:cross_mark: Por que não tem como avançar
O UltraViewer depende de um Windows Service real para funcionar, pois é esse serviço que cuida de:
Captura de tela
Hook de teclado/mouse
Sessão remota persistente
Privilégios elevados
Isso exige:
Service Control Manager
RPC
COM/DCOM
Integração profunda com o Windows
:warning: O Wine não implementa serviços Windows reais (limitação conhecida do projeto).
Mesmo com:
Todas as DLLs corretas
.NET funcionando
Arquitetura certa (32/64-bit)
:backhand_index_pointing_right: O serviço não pode ser instalado nem iniciado.
(ESSE TEXTO PARECE DE CHATGPT POR QUE ELE É, USEI PRA ORGANIZAR E ESTRUTURAR MEU PENSAMENTO DE COMO TRANSMITIR O QUE FIZ. SEM JULGAMENTOS, ESPERO AGREGAR A TODOS)

Já tentou usar alternativas multiplataforma como o rustdesk
Ou vc precisa desse programa de qualquer maneira?

1 curtida

Boa tarde, precisava especificamente desse, mas tudo bem, ja contornei o problema com uma maquina windows, resolvi na verdade publicar por motivos que nao achei nenhum topico aqui falando disso, e foi onde eu vim pra ver se tinha resposta, talvez ajude mais alguem que possa precisar, ai pra nao ficar so no não funciona resolvi publicar na íntegra! kkkkk

1 curtida

Eu não sei o motivo de você precisar especificamente do UltraView., mas enfim. O Anydesk e o Teamviewer funciona nativamente. Caso queira conectar via RDP em uma máquina windows existe o Remina(Ele também é cliente SSH e VNC).

1 curtida

É só pq o lix.. da empresa de suporte do sistema trabalha somente com ele, creio ser só por questão de valor de licenciamento!

Troca de fornecedor

Licitação meu amigo… licitação… nada é tão simples.