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)