removido
(usa Nenhuma)
Enviado em 21/03/2011 - 20:04h
Bom, este script serve para filtrar o erro do wine em busca de um arquvo .dll (biblioteca do DOS) faltante, necessária para a execução de um programa do windows (.exe), imprimindo na tela um diálogo do zenity mostrando quais bibliotecas estão faltando
Eu já publiquei na área de scripts aqui no Viva o Linux, mas até agora não saiu (Ê DEMORA...).
De lá para cá (do tempo que enviei o script até agora) eu já fiz algumas modificações no script (as principais são: imprimir o erro em inglês ou português e suportar executaveis com nenhuma biblioteca faltante (na "primeira" versão, caso o executável não tivesse bibliotecas faltantes, o erro era impresso do mesmo jeito)).
Eu só fui perceber do delay da filtragem recentemente, por isso que fiz essa pergunta aqui, caso queira ver o script, ele está aqui (quando o VoL publicá-lo, eu edito e deleto essa resposta)
Essa é a versão em português, para testar, renomeio o binário do wine (/usr/bin/wine) para pine (/usr/bin/pine) e coloque o script em alguma pasta na variável de ambiente PATH (/usr/bin, por exêmplo). Neste caso, estou passando o erro do wine para uma variável na pasta /tmp
=====================
#! /bin/bash
idioma=$(echo $LANG | cut -d"." -f 1 | cut -d"_" -f 1)
appp=$(echo $* | sed 's/ /\n/g' | grep .*\.exe | grep .*\.... -n | grep ^1: | sed 's/^1://g')
if [ x${appp} = "x" ] ; then
appname=""
else
appname=$(basename $appp)" "
fi
###Parametros
# Retorno do comando "wine" (WINE SEM NENHUM PARÂMETRO)
if [ $# = 0 ] ; then
echo "Nenhum parâmetro foi passado ao wine, por favor, execute o comando 'wine --help' para mais informações" && exit 1
fi
case $1 in
# Retorno do comando "wine--help" (WINE COM PARÂMETRO DE AJUDA)
--help) pine --help ;;
# Retorno do comando "wine --version" (WINE COM PARÂMETRO DE VERSÃO)
--version) pine --version ;;
# Retorno do comando "wine --*" (WINE COM PARÂMETRO DESCONHECIDO)
--*) echo "O parâmetro passado não existe, por favor, execute o comando 'wine --help' para mais informações" && exit 1 ;;
# Retorno do comando "wine programa.exe" (WINE COM ARQEUIVO *.EXE PASSADO)
*)
pine $* 2> /tmp/.t.log
cat /tmp/.t.log
dllerror=$(cat /tmp/.t.log | grep err:module:import_dll | cut -d " " -f 3 | sed 's/ /\n/g' | sort | uniq)
count="x"$(echo $dllerror | sed 's/\n/:/g' | sed 's/ /:/g' )
if [ $count != "x" ] ; then
zenity --title="*.dll faltante" --error --text="O programa \"$appname\"não pôde ser executado corretamente devido a falta da(s) biblioteca(s):\n\n$dllerror" && exit 1
fi ;;
esac