Wine - Como instalar um programa Windows para todos os usuários do computador (incluindo a conta Convidado)

Publicado por Eduardo Mozart de Oliveira em 06/07/2017

[ Hits: 8.977 ]

Blog: http://www.eduardomozartdeoliveira.wordpress.com/

 


Wine - Como instalar um programa Windows para todos os usuários do computador (incluindo a conta Convidado)



NOTA: este procedimento, apesar de funcionar, não é suportado pela comunidade do Wine.

No local onde trabalho possuímos um sistema de controle de material desenvolvido em Visual Basic (Windows) com banco de dados Firebird. O programa é compatível com o Wine, por isso, podemos executá-lo em ambiente Linux.

O Wine, por padrão, é monousuário (ou seja, cada usuário possuí uma "instalação" do Windows única, com configurações e programas específicos para aquele usuário). Nativamente, ele não suporta a instalação compartilhada (Shared, de acordo com a CrossOver) de programas.

Nossas estações Linux estão ingressadas ao Active Directory através do cid. Cada usuário possuí um usuário e senha para poder mexer no computador. Tanto o dono do computador quanto os seus auxiliares precisam utilizar o programa, mas o dono não estava disposto a compartilhar seu usuário e senha devido a documentos confidenciais que estão armazenados no computador.

Precisaríamos deslocar a equipe de TI para instalar o programa para cada novo auxiliar que utilizar o computador com seu usuário ou senha (uma seção que possuí alta rotatividade), ou poderíamos automatizar a instalação do programa para cada novo usuário que loga-se no computador: escolhemos a última.

OS PASSOS A SEGUIR INSTALARÃO O PROGRAMA APENAS PARA NOVOS USUÁRIOS (/etc/skel). OS USUÁRIOS ATUAIS NÃO SERÃO AFETADOS. O diretório /etc/skel é a base (em tradução literal, skel pode ser entendido como abreviação da palavra "esqueleto" [skeleton]) do diretório $HOME de novos usuários: todo conteúdo deste diretório é copiado para a $HOME do usuário (/home/$USER) quando ele realiza logon pela primeira vez (apenas na primeira vez - por isso, usuários atuais não serão afetados ao alterarmos o diretório /etc/skel).

Para criar um perfil do Wine para todos os usuários:

1 - Instale o programa Windows através do Wine no usuário atual.

2 - Copie o diretório .wine do usuário atual para /etc/skel (diretório que contém o "esqueleto" (skel) de arquivos e diretórios que são copiados automaticamente para o diretório home do usuário quando ele loga pela primeira vez no sistema) com o comando:

sudo cp -R ~/.wine /etc/skel

3 - Agora, precisamos disponibilizar os ícones dos programas Windows instalados pelo Wine do usuário atual para novos usuários com o comando:

sudo mkdir -p /etc/skel/.local/share/icons
$ sudo cp -R ~/.local/share/icons/hicolor /etc/skel/.local/share/icons


3 - Para criarmos um atalho para o programa para novos usuários, copie o atalho local (~/.local/share/applications/wine) do programa para /etc/skel/.local/share/applications/wine.

sudo mkdir -p /etc/skel/.local/share/applications/wine
$ sudo cp -R ~/.local/share/applications/wine/Programs /etc/skel/.local/share/applications/wine


Como o Wine instalou o programa somente para o usuário atual, os atalhos para a execução do programa apontarão para a pasta $HOME (/home/$USER) do usuário atual. Precisamos editar todos os arquivos *.desktop em /etc/skel/.local/share/applications/wine/Programs para apontar para ~ (diretório $HOME do usuário que logará no computador). Para não termos de alterar cada arquivo individualmente, podemos automatizar este processo com o comando [1] [2]:

sudo find /etc/skel/.local/share/applications/wine/Programs -name "*.desktop" -print0 | xargs -0 sudo sed -i "s|${HOME}|\~|g"

Infelizmente, atalhos (arquivos *.desktop) não expandem variáveis (~ é uma variável para o diretório $HOME do usuário atual). Precisamos criar um script para ser executado após o login do usuário para expandir ~ para o diretório home do usuário atual (/home/$USER). Para isso, crie o arquivo /etc/profile.d/wine.sh com o conteúdo:

#!/bin/bash
find ~/.local/share/applications/wine/Programs -name "*.desktop" -print0 | xargs -0 sed -i "s|\~|${HOME}|g"
cp ~/.local/share/applications/wine/Programs/SimatexOm\ 3.3.3/SISCOFIS\ OM\ 3.3.3.desktop ~/Área\ de\ Trabalho
chmod +x ~/Área\ de\Trabalho/SISCOFIS\ OM\ 3.3.3.desktop

As duas últimas linhas do script são opcionais: Ela cria um atalho para um programa Wine específico (SISCOFIS OM) para a Área de Trabalho e dá ao atalho permissão de execução ao usuário atual.

Referências

[1] STACK OVERFLOW. Linux - Find Files with Name Containing String, 2012 http://stackoverflow.com/questions/11328988/linux-find-files-with-name-containing-string (último acesso em 03 de setembro de 2016)

[2] STACK OVERFLOW. Awk/Sed: How to do a recursive find/replace of a string?, 2010 http://stackoverflow.com/questions/1583219/awk-sed-how-to-do-a-recursive-find-replace-of-a-string (último acesso em 03 de setembro de 2016)

Outras dicas deste autor

Alterar mapeamento de teclas da extensão Media Keys do Firefox

Configuração de impressão do SIAFI no Ubuntu

Downgrade de versões do Wine e LibreOffice instaladas à partir de repositórios PPA no Ubuntu 14.04 LTS

Desabilitando o NetworkManager no CentOS

GNOME e KDE no CentOS 5/6

Leitura recomendada

Atualizando a BIOS de máquinas virtuais baseadas em KVM/QEMU

Bloqueando Ultrasurf 9.8 com iptables

Gtop no Fedora

Slackware + Gentoo - Dual-boot sem live-CD/USB

Bug: qBittorrent movendo downloads concluídos para baixando (Debian) [RESOLVIDO]

  

Comentários
[1] Comentário enviado por brunossilva32 em 06/05/2019 - 15:58h

Cara muito obrigado me ajudou muito aqui na empresa uma situação idêntica e funcionou.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts