Use vinho sem interação do usuário

3

Eu quero executar um executável do Windows (um aplicativo de console) de um script de shell. Esse script faz parte de um projeto maior que cria automaticamente pacotes, portanto, preciso evitar a interação do usuário.

Na verdade, eu uso algo assim:

export WINEARCH=win64
export WINEPREFIX=/somewhere/$WINEARCH
wine pgen.exe

Funciona basicamente, mas com os seguintes problemas:

  1. Se WINEPREFIX estiver vazio (e este é o caso na primeira execução), será exibida uma caixa de diálogo para aguardar a configuração. Eu gostaria de evitar depender de um servidor X em execução.
  2. Se não instalado anteriormente, wine mostrará uma janela pedindo para instalar o Gecko e exigindo a intervenção do usuário.
  3. WINEPREFIX precisa ser de propriedade do usuário que está chamando o vinho, portanto, não sei como fornecer um wrapper para todo o sistema para executar o aplicativo acima.
Além da última questão (que eu posso viver sem), os outros estão bloqueando. No final, eu só quero executar um aplicativo de console.

    
por ntd 04.03.2015 / 15:50

2 respostas

4

Se você executar wine com um $DISPLAY vazio, ele ignorará a exibição de qualquer diálogo e será executado sem interação do usuário:

DISPLAY= wine pgen.exe

Para evitar o problema de propriedade de prefixo, geralmente aponto WINEPREFIX em um diretório temporário para que o prefixo seja recriado a cada vez (mas isso é lento).

    
por 04.03.2015 / 16:08
3

Você pode "inicializar" seu ambiente de vinho executando-o a partir de uma sessão X uma vez, configurando o mono etc. Depois disso, faça backup de todo o diretório .wine e use-o como base para cada usuário que precisa executar aplicação de consola.

Você pode usar xvfb como um servidor X virtual; veja aqui para um exemplo de como iniciá-lo automaticamente. Então export DISPLAY=:1 antes de começar o vinho. Eu precisava disso para fechar o vinho sobre não ter uma tela, mesmo que eu estivesse executando apenas um executável do console. YMMV.

Não tenho certeza se a árvore WINEPREFIX precisa ser de propriedade do usuário que está executando o vinho ou se precisa apenas de permissões de gravação em determinados locais (por exemplo, .reg files, locais temporários).

    
por 04.03.2015 / 16:31

Tags