Este post é mais um apanhado de dicas úteis para aqueles que precisam rodar programas do Windows em outros sistemas operacionais. Estas dicas são um pouco mais avançadas e voltadas para usuários que já estão familiarizados com o Wine e sabem futricar na linha comando e afins. Para uma melhor introdução ao Wine e como fazer uso básico dele veja A Sip of Wine.

Winecfg

Esta é uma interface gráfica que vem por padrão juntamente com o Wine para ajudar a cofigurá-lo. Para abrí-la é só digitar num terminal winecfg ou abra o aplicativo Configure Wine. Existem muitas coisas para ver aqui e não irei entrar em detalhes, mas uma boa explorada aqui pode te ajudar bastante.

Programas úteis

Incluídos também com o Wine temos diversos programinhas úteis, que geralmente são padrão do Windows.

# Desinstalar programas. Similar a "Adicionar e Remover Programas" 
$ wine uninstaller 

# Gerenciador de Processos 
$ wine taskmgr 

# Editor de Registro 
$ wine regedit 

# Campo minado :D 
$ wine winemine

WINEPREFIX

O Wine implementa um conceito interessante chamado Wine Prefixes. Ele por padrão guarda a estrutura de diretórios do Windows e seus dados de configuração na pasta .wine dentro do seu home, este é o prefixo padrão. Um prefixo alternativo é apenas uma outra pasta dessas, onde o Wine pode manter uma outra configuração sua, uma outra instalação virtual do Windows.

E por que diabos ele iria querer fazer isso? Bem, o conjunto da obra do Wine é basicamente um monte de reimplementações de DLLs do Windows, mas ele também consegue carregar e rodar DLLs nativas. Geralmente estas são bibliotecas de funções usadas pelos mais diversos programas e não há nada de errado com isto. O problema surge porque existem programas que, juntamente com o seu processo de instalação, copiam para o seu computador DLLs de sistema, escrevem no registro e outras coisas mais. Isto acaba por fazer com que o Wine funcione incorretamente, ou mais comumente, que alguns programas funcionem e outros não.

Para resolver este problema que existem os prefixos. Podemos isolar o instalação de alguns aplicativos em determinados prefixos e impedir que eles interfiram com as outras. Uma demonstração de como isso pode ser feito segue abaixo, imagine que temos os aplicativos A, B, C.

# A sendo instalado no prefixo padrão. ~/.wine 
$ wine install_A.exe 

# B sendo instalado no seu próprio prefixo ~/.wine-B 
# O diretório não precisa ser criado previamente 
$ WINEPREFIX=~/.wine-B wine install_B.exe 

# C sendo instalado no seu próprio prefixo ~/.wine-C 
$ WINEPREFIX=~/.wine-C wine install_C.exe

E é basicamente isto. O Wine continua a criar ícones dos aplicativos no seu Desktop e/ou menu de atalhos, não importando o prefixo em que eles foram instalados e estes inicializam a aplicação da forma correta.

WINEDEBUG

O Wine por padrão inclui várias mensagens de DEBUG espalhadas em pontos estratégicos do código e que são impressas no console quando necessário, a fim de dar algumas dicas sobre o possível problema que o Wine está enfrentando para rodar um certo aplicativo. Elas são especialmente úteis para pedir ajuda para pessoas que sabem mais que você, como por exemplo para pedir ajuda no canal irc://irc.freenode.net/#winehq.

Existem cinco tipos de mensagem (ou debug class na nomenclatura oficial): fixme, err , warn, trace. Os dois primeiros estão ativos por padrão, são mais “sérios”, os outros podem ser ativados sob demanda.

As mensagens são impressas no terminal e podem ser customizadas mudando o valor da variável de sistema WINEDEBUG, alguns exemplos:

# Não imprime nenhuma mensagem 
$ WINEDEBUG=-all wine seu_app.exe 

# Imprime warnings; ignora erros e fixmes 
$ WINEDEBUG=warn+all,err-all,fixme-all wine seu_app.exe 

# Imprime warnings do componente de OpenGL; ignore todos fixmes 
$ WINEDEBUG=warn+wgl wine seu_app.exe 

# Ignora todos os fixmes e imprime um trace do dinput 
$ WINEDEBUG=trace+dinput,fixme-all wine seu_app.exe

Como pode ser visto nos exemplos é possível filtrar as mensagens de debug por subcomponente, cada um desses componentes é chamado de um debug channel.

Para mais informações e sintaxe dos comandos consulte: Wine Debug Channels

Conclusão

Neste post vimos algumas dicas mais avançadas de uso do Wine. Espero que elas te ajudem. Mais informações podem ser encotradas também no FAQ do Wine.

Como sempre, posso esclarecer dúvidas nos comentários.