Wine : Borland Delphi 6

Atenção : Este artigo tem nível de dificuldade intermediário e é recomendado apenas para programadores mais experientes com Linux.

As vezes somos forçados a usar ferramentas já consideradas legadas para dar algum tipo de manutenção e sobrevida à eles. Quando você tem tais ferramentas consideradas legadas instaladas no seu computador então não há problemas, mas e quando não as tem e elas não são compatíveis com o sistema operacional em uso ? A única solução que realmente atende essa solução chama-se virtualização. Virtualização é um conceito bastante oportuno e prático, no entanto, há também a opção "B" que estava em oculto, a utilização do WINE no ambiente Linux. O wine é capaz em algumas oportunidade – não são todas – de criar um ambiente hospedeiro que possa tornar compátiveis nosso sistema Linux com ambientes Win95, Win98, WinMe, Win2000, WinXP e WinVista. Para demonstrar a utilização dum sistema como esse, vou praticar um passo-a-passo como de custume para criar um ambiente Wine simulando um Windows 98 que é compátivel com uma das ferramentas de programação mais conhecidas, o Delphi – neste artigo o Delphi 6 com conectividade com o banco de dados MSSQL 6.5 (legado).

Muitas vezes instalar um ambiente WINE é fácil, mas há ambiente mais complexos, por exemplo, neste artigo farei a instalação do WINE + Delphi 6 + MSSQL Client numa partição separada do ~/.wine comum, isto permitirá que o que fizer para fazer o Delphi6 funcionar não interfira nos demais aplicativos e também o inverso, isto é, que outros aplicativos instalados no WINE não interfiram na minha instalação WINE. Estou usando neste artigo Ubuntu Gutsy(7.10) e WINE versão 0.9.59.

Passo 1) Instalando o WINE

cd /tmp

wget http://wine.budgetdedicated.com/apt/387EE263.gpg

sudo apt-key add 387EE263.gpg

sudo wget http://wine.budgetdedicated.com/apt/sources.list.d/gutsy.list -O /etc/apt/sources.list.d/winehq.list

sudo apt-get update

Agora há duas opções : instalar ou atualizar o WINE.

Se já tiver o wine instalado :
sudo apt-get -y upgrade

Se não tiver o wine instalado :
sudo apt-get -y install wine

Passo 2) Criando um diretório para armazenar nossa instalação :

Eu vou utilizar $HOME para referir-se a pasta pessoal de cada usuário, se a pessoa chamar-se “fulano”, a pasta WINE será /home/fulano/delphi6. Isso é apenas um exemplo e voce pode modificar se achar necessário. Execute no terminal :

cd
mkdir /home/$USER/delphi6
export WINEPREFIX="/home/$USER/delphi6"
wineprefixcreate

A variável WINEPREFIX faz um particionamento do WINE, isto é, da sua criação em diante, o WINE achará que seus aplicativos e suas configurações estarão armazenadas na pasta especificada por $WINEPREFIX.

Crie também estes diretórios : (mais tarde eu explico)

mkdir /home/$USER/delphi6/drive_c/desktop
mkdir /home/$USER/delphi6/drive_c/meus_documentos
mkdir /home/$USER/delphi6/drive_c/imagens
mkdir /home/$USER/delphi6/drive_c/musicas
mkdir /home/$USER/delphi6/drive_c/videos
mkdir /home/$USER/delphi6/drive_c/temp

Se por alguma razão, voce interromper a execução desse artigo ou for obrigado a abrir um novo terminal, lembre-se de executar :

export WINEPREFIX="/home/$USER/delphi6"

Antes de executar os novos procedimentos, isto avisará o WINE para reutilizar o que criamos.

Passo 3) Configurando o WINE :

Execute no terminal :

winecfg

Nesse instante um aplicativo gráfico trará os principais parametros do WINE para o qual voce queira ajustar. Iremos ajustar alguns parâmetros :

Na guia “Applications” configure o campo “Windows Version” de “Windows XP” para “Windows 98”.

Isso é requerido porque nosso aplicativo Delphi6 só é compátivel com o Win98, poderia até rodar em versões posteriores do Windows, mas nesse caso, no meu exemplo, o Delphi6 só roda no Win98.

Na guia “Graphics” deixe marcado o checkbox “Allow the window manager to control the windows”.

Isso fará com que o tema que voce tem instalado possa manipular as janelas dos aplicativos WINE.

Na guia “Desktop Integration” existe uma área chamada de “Shell Folder”, nela você precisará configurar alguns caminhos :
“Area de Trabalho” para “/home/$USER/delphi6/drive_c/desktop”
“Meus documentos” para “/home/$USER/delphi6/drive_c/meus_documentos”
“Minhas imagens” para “/home/$USER/delphi6/drive_c/imagens”
“Minhas musicas” para “/home/$USER/delphi6/drive_c/musicas”
“Meus Videos” para “/home/$USER/delphi6/drive_c/videos”

Foi para isso que no passo 2 voce criou as pastas que eu explicaria mais tarde.

Alerta : Alguns mais experientes com o WINE já estariam tentados a incluir DLLs nativas, por gentileza, não façam isso.

Feche o winecfg e a seguir execute no terminal :

wine regedit

Isso abrirá um aplicativo muito conhecido no mundo Windows, o regedit. Precisaremos modificar algumas váriaveis.  Localize a chave “HKEY_CURRENT_USER\Control Panel\International” e mude o valor em sShortDate de “d/M/yyyy” para “dd/MM/yyyy”. Acredite, isso é importante.

Ainda no regedit, localize a chave “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment” e mude seu conteúdo atual que provavelmente é :

C:\windows\system32;C:\windows

Para :

C:\windows\system32;C:\windows;c:\Arquivos de programas\Borland\Delphi6\Bin;c:\Arquivos de programas\Borland\Delphi6\Projects\Bpl;c:\mssql\binn

Essa variável é o “caminho de busca” do Windows, você incluiu alí os caminhos dos binários do Delphi e do cliente MSSQL.
Pronto, pode fechar o regedit.

Em versões posteriores do Ubuntu, não sei porque razão, alguns aplicativos deixam de ser executados com a seguinte mensagem de erro :

winevdm: unable to exec ‘C:\caminho\aplicativo.exe’: DOS memory range unavailable

Não sei porque acontece isso, mas sei a solução, execute no terminal :

sudo sysctl -w vm.mmap_min_addr=0

Agora nosso WINE parece estar razoavelmente configurado e pronto para prosseguir.

Passo 4) Paranóia de segurança :

Elimine o arquivo “/home/$USER/delphi6/dosdevices/z:”, execute :

rm -f  "/home/$USER/delphi6/dosdevices/z:"

A unidade Z: usada pelo WINE dá livre acesso ao seu disco desde a partição raíz (/). Eu considero isso uma falha na segurança grave, talvez seja paranóia minha, mas os aplicativos sob WINE não deveriam enxergar amplitudes maiores do que realmente está programado para fazer.

Passo 5) Criando letra de drive D: para o CDROM no WINE

Assim que um cdrom é inserido e seu conteúdo é exibido pelo GNOME, o WINE cria automáticamente o drive D: apontando para essa unidade. No entanto, as vezes o WINE é  configurado de maneiras diferentes e as vezes essa letra de drive pode não ser criada automática. Para os casos onde D: não foi criado automáticamente voce pode executar no terminal :

ln -s /media/cdrom "/home/$USER/delphi6/dosdevices/d:"

Voce criou um D:  apontando diretamente para o CDROM.

A partir desse instante voce vai ter que inserir o cdrom de instalação do Delphi. Se voce não tem o Delphi em CDROM, mas sim uma cópia de seus arquivos então use o comando acima para ao ínves de D: apontar para o CDROM então apontar para esses arquivos.

Passo 6) Instalando o Microsoft Installer

Benvindo a nossa primeira é única biblioteca nativa. O WINE inclui um fake MSI, isto é, um MSI falso porém funcional para a maioria dos aplicativos, mas existem vezes que surgem aplicativos que se comportam de maneira diferente no fake-msi, o Delphi 6 é um deles. Sem o Microsoft Installer incluso no WINE voce não conseguirá passar da tela de digitação do serial key. Execute os seguintes procedimentos :

Acesse o cdrom do seu Delphi, pois o Microsoft Installer (instmsia.exe) está incluído. Se não estiver, Vá até a página :

http://www.microsoft.com/downloads/details.aspx?familyid=CEBBACD8-C094-4255-B702-DE3BB768148F&displaylang=en

e baixe o programa “instmsia.exe” salvando-o em /home/$USER/delphi6/drive_c/temp

Agora acesse a pasta onde esta o “instmsia.exe”, se foi da internet :

cd /home/$USER/delphi6/drive_c/temp

ou se vai ser do cdrom do Delphi6 :

cd /media/cdrom

E execute-o :

wine ./instmsia.exe

Quando surgir a mensagem :
“Instalação concluída com exito”  ou  “Successfully registered dll L”C:\\windows\\system32\\msi.dll””

Então a instalação ocorreu conforme era esperado.

Se não aparecer nenhuma mensagem, preocupe-se!, pois provavelmente os passos adiante não funcionarão.

O próximo passo é indicar ao WINE que desejamos usar o MSI nativo e nunca o fake MSI que acompanha o WINE. Execute novamente no terminal :

winecfg

Na guia “Libraries” acrescente a seguinte DLL Override :
msi.dll (native) –> Não use “native, builtin” que é auto-indicado como padrão :

MSI Nativo

Passo 7) Instalando o Delphi :

Vá até o diretório do instalador, e execute :

cd /media/cdrom
wine ./setup.exe

um outro modo de executar o instalador é esse :

wine msiexec /i "Borland Delphi 6.msi"

Não há diferença entre ambos,  pelo menos que eu tenha notado, ambas instalações comportam-se da mesma maneira.

Escolha instalar o item “Delphi 6” e siga os procedimentos passo-a-passo que são solicitados, Conforme o padrão Next->Next->Finish :
Tela inicial contendo a licença

Se por acaso, você emperrar na etapa do serial number é porque o MSI não foi instalado direito ou você não está usando o msi.dll nativo. Se não houver problema a instalação prosseguirá :

instalação
Durante a instalação poderá ocorrer uma mensagem de erro dizendo que o BDE não teve “merge” para a nova configuração. Nós corrigiremos isso no final :

Erro na instalação do BDE.

Ao final da instalação, execute no terminal :

wineboot

Passo 8) Corrigindo o problema do BDE “unable to merge new configuration”

Se você tentar executar :

wine "/home/$USER/delphi6/drive_c/Arquivos de programas/Arquivos comuns/Borland Shared/BDE/bdeadmin.exe"

Provavelmente o BDE falhará, acontece que há um parametro do BDE pós-instalação que é desprovido de valor e isto impede-o de ser executado, estranho né que o próprio instalador faça isso ?

Para corrigir o problema, terá de criar um idapi32.cfg novinho em folha e para isso será infelizmente será necessário uma máquina com o BDE (SQLLinks incluso) instalado e devidamente configurado. Vá  até a estação Windows, abra o painel de controle, dê um duplo clique no ícone [BDE Administrator]. Selecione a guia “Configuration”, depois abra o item “System->INIT” e procure pelo parâmetro “SHAREDMEMLOCATION” e mude seu conteúdo para “9000” (sem as aspas) :

Ajustando o BDE
Aplique as novas configurações e em seguida selecione no menu do BDE->Object->Save as Configuration, salve-o com o nome de idapi32.cfg por cima do já existente.

Copie o idapi32.cfg da estação Windows para seu wine em :
"/home/$USER/delphi6/drive_c/Arquivos de programas/Arquivos comuns/Borland Shared/BDE/"

Certifique-se de que haja apenas um idapi32.cfg, pois em algumas oportunidades pode permanecer a versão remanescente do mesmo arquivo, no entanto, em maiúsculo.

Infelizmente, mesmo mudando o parâmetro “SHAREDMEMLOCATION” na estação Windows e exportando-o, ainda assim, o arquivo idapi32.cfg exportado fica com SHAREDMEMLOCATION=nada na máquina onde foi copiado. Isso é irritante, pois forçará nossa intervenção no registro no wine, execute :

wine regedit

E procure pela chave [HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\SYSTEM\INIT] e localize a variável “SHAREDMEMLOCATION” e troque o valor [em_branco] para [9000]. Pronto ! Agora execute o teste :

wine "/home/$USER/delphi6/drive_c/Arquivos de programas/Arquivos comuns/Borland Shared/BDE/bdeadmin.exe". Se parecer algo como isso aqui :
BDE instalado e configurado.

Então é porque funcionou perfeitamente, caso contrário, isto é, se ainda não estiver funcionando então desista de usar o Delphi. Pois há pouco que se possa fazer com um Delphi onde não se pode usar/manipular o BDE. Aqui comigo funcionou 100%, e reinstalei várias vezes e obtive sucesso em todas, mas o WINE está em constante desenvolvimento e a próxima versão pode estar sabotando.

Passo 9) Executando o Borland Delphi 6 :

Após a conclusão da instalação, precisamos criar um atalho para chamar o Delphi.
É interessante criar um bash-script porque o delphi está numa raiz diferente de ~/.wine e por essa razão não são criados atalhos no menu GNOME/KDE.

Use seu editor favorito para criar este arquivo :
<———– inicio de delphi6.sh ————->
#!/bin/bash
export WINEPREFIX="/home/$USER/delphi6"
# explico mais tarde a opcao : explorer /desktop=Delphi6,1024×768
wine explorer /desktop=Delphi6,1024×768 "c:\\Arquivos de programas\\Borland\\Delphi6\\Bin\\delphi32.exe"
<————- fim de delphi6.sh ————->
Salve o script acima como delphi6.sh e dê permissão de execução :
chmod a+x delphi32.sh

Como o escopo deste artigo é para programadores, voce provavelmente já sabe como criar um atalho para ele na área de trabalho não é mesmo?
Vejamos como fica o delphi 6 quando está carregado :

Note o fundo vazado, onde parte do papel de parede é visto. Pois é, isso é um problema !

Se voce minimizar qualquer uma das janelas do Delphi, elas são minimizadas, porém voce não sabe para exatamente onde ou como retorna-las. Foi por essa razão que usei o paramêtro "explorer /desktop=Delphi6,1024×768", assim todas as janelas são unidas como num desktop virtual e aparecem como uma única aplicação no GNOME Task List :
Virtual Desktop

No exemplo acima, usei 1024×768 como tamanho do desktop virtual, no entanto, é necessário ter cautela no tamanho, pois se voce colocar 100% da sua resolução então vai ter problemas para conseguir manipular direito esta janela enorme. Por isso, ao especificar a resolução tente escolher uma escala menor do que a máxima que seu monitor comporta, por exemplo, seu monitor tiver resolução de 1280×1024 então use um virtual desktop com 1024×768, se seu monitor tem o máximo de 1024×768 então tente 800×600 e assim por diante, essa é apenas uma sugestão porque voce pode usar qualquer tamanho. Meu monitor é widescreen e posso usar tranquilamente 1280×800 e ainda sobra espaço.

Será que compila ? Vejamos :

Compilando programas
Sim, podemos compilar o que quisermos.

Passo 10) Tá tudo liberado !

Tá liberado configurar o WINE do seu jeito, a partir de agora, voce pode acrescentar DLLs nativas, mudar a configuração de Win98 para WinXP, o que voce quiser fazer poderá fazer, mas fique avisado que modificações posteriores podem implicar em melhoria, mas também na inutilização do delphi.

Passo 11) Instalando o cliente do MSSQL 6.5

Um banco de dados legado. Se sua aplicação Delphi acessa um banco desses é necessário a instalação do cliente para esse banco de dados. Especialmente porque o BDE é muito sensível, já no DBExpress é tudo muito mais simples.

Coloque o cdrom do Microsoft SQL e já com a unidade de cdrom montada rode o setup dele :
cd /media/cdrom/sql65/i386
wine ./setup.exe

Vejas as telas em sequencia passo a passo :
Tela de Apresentação

Instalando
Ao se aproximar do FIM, o instalado do MSSQL abre um monte de telas entituladas “gerenciador de programas”, feche todas que aparecerem. E no final voce verá :
Instalação terminada.

Vamos configurar o cliente MSSQL 6.5 :
cd /home/$USER/delphi6/drive_c/MSSQL/BINN
wine windbver.exe

Vejamos algumas telas de configuração :

Configurando NetLibrary

Configurando de forma avançada.

Vamos executar o MSSQL Enterprise Manager :
wine SQLEW.EXE

Vejamos como fica o Enterprise Manager :
Abrindo o Enterprise Manager

12) Instalando o cliente de banco de dados FirebirdSQL

Também é possivel usar essa versão de Delphi para criar e acessar outras base de dados. Tenho usado o Delphi6 para criar aplicações que acessam base de dados FirebirdSQL. Usando componentes IBO, não somente é possivel desenvolver usando a dupla Delphi+WINE, como também os aplicativos gerados também rodam sob o WINE. Se voce quer experimentar isso vai precisar instalar o cliente para banco de dados FirebirdSQL :
Vá até a página :

http://www.firebirdsql.org/index.php?op=files&id=engine_203

e baixe o programa “Firebird-2.0.3.12981-1-Win32.exe” salvando-o em /home/$USER/delphi6/drive_c/temp
cd /home/$USER/delphi6/drive_c/temp
wine ./Firebird-2.0.3.12981-1-Win32.exe

Veja as algumas telas da instalação :

Apenas o cliente.

Note que não é preciso instalar os componentes do Servidor, exatamente porque desejamos ficar apenas com o cliente. Se desejássemos instalar o servidor, teríamos feito no próprio Linux. Vejamos a mensagem de instalação completada :

Termino da instalação.

Será que consigo rodar o Delphi minhas aplicações que acessam base de dados MSSQL e FirebirdSQL ? Certamente que sim.

Passo 13) Testando o acesso a base de dados FirebirdSQL

Um ótimo teste para sabermos se qualquer aplicativo executável win32 acessaria a base de dados Firebird é instalando um gerenciador de banco de dados, existem muitos, mas vou usar o IBOConsole que é bastante simples.

Primeiramente vá até a página :

http://www.mengoni.it/Downloads/

e baixe o arquivo IBOConsoleSetup.exe, salve-o na pasta /home/$USER/delphi6/drive_c/temp.

Para instala-lo execute no terminal :
export WINEPREFIX="/home/$USER/delphi6"
cd /home/$USER/delphi6/drive_c/temp
wine ./IBOConsoleSetup.exe

Prossiga com a instalação com o modo trivial do tipo Next->Next->Finish :
Instalando

Ao completar a instalação, experimente executa-lo no terminal :


export WINEPREFIX="/home/$USER/delphi6"
wine "C:/Arquivos de programas/IBOConsole/IBOConsole.exe"

Registrando um servidor :

Registrando um servidor

Registrando um banco de dados :

Registrando um banco de dados

Recuperando informações do banco de dados :

Recuperando informações do banco de dados

Pois é, funcionou.
Assim podemos ter certeza que a maioria dos aplicativos comerciais que usam Interbase/Firebird podem ser executados no Linux via WINE.

Passo 14) Executando novos aplicativos

Se voce precisar executar novas instalações e agregar mais coisas a instalação do Delphi voce pode executar :

wine explorer shell

Assim voce pode navegar no C:\ e outros drives, executar aplicativos copia-dos para ../drive_c, etc… mas ele é um gerenciador de arquivos e shell simples. Devem existir outros gerenciadores melhores, mas tem que procurar isso no mundo windows e tem que ser um que não dependa do próprio Windows.

Passo 15)Simplificando a vida com um menu seletor

Que tal um script já pronto com um menu seletor semelhante a este :
Menu Seletor.
Baixe este arquivo :

#!/bin/bash
# Borland Delphi 6 for Linux
# Seletor de programas
# By Hamacker (sirhamacker [em] gmail.com)

# Este script só funciona se delphi6 (.wine renomeado)
# estiver no diretorio :

export WINEPREFIX="/home/$USER/delphi6"

if ! [ -d "$WINEPREFIX" ] ; then
echo "Não foi encontrado o diretorio do delphi6 em lugar algum"
echo "Este sistemas esta treinando para encontrar o"
echo "delphi6 nos seguintes lugares :"
echo " /home/$USER/delphi6"
exit 2;
fi

# indo para o diretorio padrao
cd $WINEPREFIX

# setando algumas variaveis a respeito do aplicativo
APP_NAME="delphi6"
APP_DESC="Borland Delphi 6"
app_icon="$WINEPREFIX/delphi6.xpm"

# creating shortcut in desktop area
#SHORTCUT="/usr/share/applications/$APP_NAME.desktop"
SHORTCUT="/home/$USER/.local/share/applications/$APP_NAME.desktop"

if [ -f $SHORTCUT ] ; then
echo "Shortcut for $APP_DESC already exist !"
else
echo "[Desktop Entry]">$SHORTCUT
echo "Encoding=UTF-8">>$SHORTCUT
echo "Version=1.0">>$SHORTCUT
echo "Type=Application">>$SHORTCUT
echo "Exec=$WINEPREFIX/$APP_NAME.sh">>$SHORTCUT
echo "Icon=$app_icon">>$SHORTCUT
echo "X-GNOME-DocPath=">>$SHORTCUT
echo "Terminal=false">>$SHORTCUT
echo "Name=Menu do $APP_DESC">>$SHORTCUT
echo "GenericName=Menu do $APP_DESC">>$SHORTCUT
echo "Comment=Menu do $APP_DESC">>$SHORTCUT
echo "Categories=Development;">>$SHORTCUT
chmod a+x $SHORTCUT
echo "I create a $APP_DESC shortcut for you, enjoy!"
fi;

APP_DELPHI6="c:/Arquivos de programas/Borland/Delphi6/Bin/delphi32.exe"
APP_DBEXPLOR="c:/Arquivos de programas/Borland/Delphi6/Bin/dbexplor.exe"
APP_PCE="c:/Arquivos de programas/Borland/Delphi6/Bin/pce.exe"
APP_SQLMON="c:/Arquivos de programas/Borland/Delphi6/Bin/sqlmon.exe"

clear;
RET="---"
while [ "$RET" != "sair" ] ; do
RET=`zenity --width=700 --height=500 --window-icon=$app_icon \
--list --title "$APP_DESC para Linux" \
--text "Qual aplicativo gostaria de executar ?" \
--column "Nome" \
--column "Descrição" \
"delphi6" "Borland Delphi 6" \
"dbexplor" "SQL Explorer" \
"pce" "Package Collection Editor" \
"sqlmon" "SQL Monitor" \
"mssql" "MSSQL Enterprise Manager" \
"vidylogin" "VIDY Login" \
"iboconsole" "IBOConsole" \
"explorer" "Gerenciador de Arquivos do Windows" \
"taskmgr" "Gerenciador de Tarefas do Windows" \
"regedit" "Editor de Registro do Windows" \
"winecfg" "Configurador do WINE" \
"sair" "Sair"`

if [ "$RET" == "delphi6" ] ; then
echo "Executando $APP_DESC..."
#wine explorer /desktop=Delphi6,1280x800 "$APP_DELPHI6"&
wine explorer /desktop=default,1400x800 "$APP_DELPHI6"&
#wine "$APP_DELPHI6"&
fi

if [ "$RET" == "dbexplor" ] ; then
echo "Executando SQL Explorer..."
wine "$APP_DBEXPLOR"&
fi

if [ "$RET" == "pce" ] ; then
echo "Executando Package Collection Editor..."
wine "$APP_PCE"&
fi

if [ "$RET" == "iboconsole" ] ; then
echo "Executando o iboconsole..."
wine "C:/Arquivos de programas/IBOConsole/IBOConsole.exe"
fi

if [ "$RET" == "sqlmon" ] ; then
echo "Executando SQL Monitor..."
wine "$APP_SQLMON"&
fi

if [ "$RET" == "taskmgr" ] ; then
echo "Executando Windows Task Manager..."
wine taskmgr&
fi

if [ "$RET" == "explorer" ] ; then
echo "Executando Windows Task Manager..."
wine explorer shell&
fi

if [ "$RET" == "vidylogin" ] ; then
echo "Executando o VIDYLogin"
#wine c:/vidy/bin_cs/vidylogin.exe&
wine explorer /desktop=Delphi6 "c:/vidy/bin_cs/vidylogin.exe"
fi

if [ "$RET" == "regedit" ] ; then
echo "Executando Windows Regedit Editor..."
wine regedit&
fi

if [ "$RET" == "mssql" ] ; then
echo "Executando MSSQL Enterprise Manager..."
wine c:/mssql/binn/sqlew.exe&
fi

if [ "$RET" == "winecfg" ] ; then
echo "Executando o configurador do Wine..."
winecfg&
fi
done

unset WINEPREFIX
exit 0;

Salve-o como /home/$USER/delphi6/delphi6.sh. Este é um script-bash que usa um componente chamado zenity, ele fornece alguns componentes graficos para o GNOME. É aconselhável criar ícones no formato .xpm para representar aplicativos como delphi6.xpm, dbexplor.xpm,pce.xpm,sqlmon.xpm.

Sob Licença Creative Commons :

Você pode :

  • criar obras derivadas

Sob as seguintes condições:

  • Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante.
  • Uso Não-Comercial. Você não pode utilizar esta obra com finalidades comerciais.
  • Para cada novo uso ou distribuição, você deve deixar claro para outros os termos da licença desta obra.
  • Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor.
  • Nothing in this license impairs or restricts the author’s moral rights.
  • Quando publicado notra mídia, apenas como cortesia, notifique o autor.

Conclusão :

A idéia aqui é apenas instalar algo legado que roda com dificuldades no WINE, mas roda. A maioria dos aplicativos comerciais criados com o Delphi rodam no WINE, e os que não rodam necessitam apenas de modificações pequenas no geral.

Eu estravaguei um pouco instalando o próprio Delphi no WINE para justificar que se o próprio Delphi roda, porque aplicativos criados com ele não rodaria ? Claro que existem excessões, a medida que voce utiliza componentes de terceiros voce começa a comprometer a compatibilidade do WINE, mas não é assim para todos os componentes, por exemplo, estou usando satisfatóriamente a suíte IBO para acessar base de dados do FirebirdSQL, mas poderia usar outras suítes também. Os aplicativos que acessam base de dados MSSQL 6.5 foram feitos com o Delphi6 e estes rodam sob o WINE, inclusive aplicativos que criam sinais na bandeja do Windows fazem o mesmo na bandeja do GNOME.

Este é um blog e não uma página de suporte técnico. O que aprendí passo com prazer a outros, mas não espere que eu apareça e tire as suas dúvidas com programação ou consultoria [não remunerada]. Leve suas dúvidas à listas de discussão onde elas serão apreciadas melhor.

Algo que gostaria de observar é que alguns artigos que postei aqui foram parar em muitos lugares diferentes, eu aprecio isso. No entanto, também foram prar em páginas de assinantes e/ou conteúdo reservado, e disso não gostei muito. A licença de uso dos artigos nesse blog é Creative Commons conforme delineado na página inicial, para evitar o caratér comercial ou exclusividade, daí o motivo de estar colocando neste artigo uma seção dedicada a  Licença de uso para que não passe despercebido pelos copiadores de plantão.

  1. #1 por Fábio Gomes em 19 \19\UTC abril \19\UTC 2008 - 12:29

    Muito bom!

    Só uma dica besta para aqueles que como eu seguem a lei do mínimo esforço.

    Você pode trocar:
    cd /home/$USER/delphi6/
    por
    cd ~/delphi6/

    ~/ acessa o diretório home do usuário, fica mais simples :)

  2. #2 por Felipe em 7 \07\UTC julho \07\UTC 2008 - 15:03

    Para fazer funcionar um sistema da empresa onde trabalho feito em Delphi 7, tive que adicionar a msvcp60.dll do ruindow$ xp na pasta system32 do wine.

  3. #3 por Leonardo Gazio em 22 \22\UTC maio \22\UTC 2009 - 11:23

    Muito massa mesmo esse artigo cara, era a única coisa que faltava pra eu me livrar desse windows de uma vez por todas. O seu passo-a-passo funcionou perfeitamente aqui comigo, mas eu tô passando por um problema que talvez vocês possam me dar uma luz, seguinte;
    Tenho uma aplicação que é toda webservice(cliente) usando o HTTTPRIO pra fazer as chamadas,
    quando eu tento fazer uma chamada me retorna a excessão “OLE error 80004001”. Alguém chegou a passar por essa experiência?

    Abraços a todos.

  4. #4 por João Ishiwatari em 6 \06\UTC setembro \06\UTC 2009 - 17:00

    Só tem um detalhe não mencionado….

    Não sei se voce reparou, mas não é possível fixar a posição do Component Palette, Você pode ajustar as abas como quiser só que quando fecha e abre a aplicação novamente as abas voltam ao padrão original (no caso em ordem alfabetica).

    Já tentei ajustar o registro do windows HKCU\Software\Borland\Delphi\7.0\Main Window\Sort Palette Tabs Menu (true) para (False) ou (0) e mesmo assim não funciona.

    Se souber como corrigir esse problema email-me por favor.

  5. #5 por João Ishiwatari em 18 \18\UTC janeiro \18\UTC 2010 - 12:10

    ORGANIZAR COMPONENT PALETTE DELPHI 7 WINE

    Eu trabalho com o Delphi7 no Ubuntu 9.10 usando wine e a única maneira que encontrei de manter as abas de componentes na ordem que eu gosto foi editando o registro do windows e renomeando as abas para algo como :

    Standard -> 1.Standard
    Additional -> 2.Additional
    Common Controls -> 3.Common Controls

    Assim, como o wine SEMPRE ordena as abas por Ordem Alfabética, Números vem sempre antes de letras =P

    O problema é realmente este, se você comparar o registro do windows (normal) com o registro do wine vai perceber que as abas no windows são ordenadas como aparecem e no wine elas estão sempre em ordem alfabética. Acredito que seja o “regedit” do wine q ordene para facilitar a localização, pois não vejo outro movito lógico para tanta besteira. =P

    Bom é isso, eu enfrento probleminhas todos os dias por optar em trabalhar com o delphi dentro do linux com o wine (eu poderia voltar ao esquema de VirtualBox/RWindow$ mas prefiro como está, mesmo com esses probleminhas:

    F11 – Teoricamente, essa tecla tras pro foco os controles da IDE, OI, SOURCE, FORM, dentro do wine ele nao traz o FORM devolta, soh intercala entre OI e SOURCE

    2x clicks em um controle para gerar a procedure do evento principal não joga o foco para o SOURCE, voce fica preso no form e tem q trazer o SOURCE manualmente pro foco.

    As acentuações muitas vezes falham quando feitas diretamente no OI, EX : Caption | Abraço as vezes o ç muda pra algo irreconhecivel ou outra tecla acentuada, mas como eu uso JEDI e ele altera os campos Text e Caption do OI, dando a mesma funcionalidade de um campo como SQL ou ITEMS, com o botao […] para que voce edite texto mais extensos, o problema de acentuação se resolve.

    Uma coisa que me intriga, em algumas estações onde rodo minhas apps, (sempre linux e wine) algumas janelas não ganham o foco, Voce chama a janela, percebe q ela foi criada mas nao aparece na tela e o sistema congela (no caso a chamada eh modal), obrigando o usuario a fechar toda a aplicacao. Em meu pc esse problema já não ocorre, eu acredito que possa ser a diferença de versão do linux/wine (a minha eh mais recente), mas ainda não pude atualizar as estações pra ver se o problema se resolve.

%d blogueiros gostam disto: