Questão Como criar um aplicativo nativo a partir de um script de shell?


Eu criei um pequeno aplicativo usando Bash e Zenity que eu gostaria de instalar no meu sistema como um aplicativo nativo, bem como um pacote que eu possa distribuir. Eu tenho um arquivo .desktop para meu aplicativo, um ícone .png e o arquivo .sh. Para onde esses arquivos vão fazer um aplicativo "nativo" e por qual processo eu precisaria ir para criar um pacote que possa ser compilado para instalar esse aplicativo em outro sistema?


4
2018-02-23 05:59


origem


Aqui está um link para um arquivo zip com todos os arquivos necessários para executar o aplicativo - é um temporizador de chá pouco simples. :) Para executá-lo, basta executar o script. O arquivo .desktop provavelmente não funcionará. dropbox.com/s/ya9futuiz33lian/GTeaKup.zip - Ryan McClure
Você já verificou packaging.ubuntu.com/html/packaging-new-software.html ? - Radu Rădeanu


Respostas:


Sobre a primeira parte: Para começar, gostaria de tornar o script executável e remover .sh extensão do script e do .desktop Arquivo. Se você quiser usá-lo em todo o sistema, copie todo o diretório, exceto o .desktop arquivo, para /opt. o .desktop arquivo seria então:

[Desktop Entry]
Version=1.0
Type=Application
Name=GTeaKup
Comment=The perfect GTK tea timer!
Exec=/bin/bash gteakup
Icon=gteacup.png
Path=/opt/GTeaKup/
Terminal=false
StartupNotify=false

... e copie isso para /usr/share/applications

Sobre a segunda metade da sua pergunta: dê uma olhada Aquiespecialmente este é bom começar com se você nunca criou pacotes Debian antes. Você terá um instalador como esta. Quando você instalá-lo através do centro de software, ele irá reclamar, porque os arquivos comuns, como changelog, copyright etc., não estão incluídos, mas funciona bem.

btw você sabe que o seu script age de forma diferente em duplo clique e quando o botão ok é escolhido? ;)


3
2018-02-23 07:46



Isso funciona! Eu editei o processo um pouco e funciona! :) Estou tentando (por enquanto) criar um pacote distro-neutral que possa ser compilado e instalado sem um gerenciador de pacotes. Eventualmente, vou criar um pacote debian para ele. No momento, estou lutando para descobrir como consertar o script para que, quando o botão OK for escolhido, o menu seja repetido até que uma opção seja selecionada. Alguma ideia? - Ryan McClure
... Eu tenho medo de não ser um especialista em bash, mas em python, eu usaria o loop while (enquanto a resposta não está em [list], ou respondo! = (Não é igual a) isso ou aquilo, repita a pergunta, else: faça o seguinte). Isso ajudaria: cyberciti.biz/faq/bash-while-loop ? - Jacob Vlijm


Você pode usar um script de shell install.sh conforme indicado abaixo para instalar o seu tea timer script para outra máquina.

#!/bin/bash
install_dir="$HOME/teaKup"
current_dir="$(pwd)"
dpkg -s sox > /dev/null 2>&1
if [ $? = 0 ]; then
    mkdir $install_dir #create directory to place files.
    cp $current_dir/gteakup.sh $install_dir/ # copies the file.
    cp $current_dir/gteakup.png $install_dir/
    cp $current_dir/sound.ogg $install_dir/
    cat > $HOME/Desktop/GTeaKup.desktop << EOF # create desktop file at desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=GTeaKup
Comment=The perfect GTK tea timer!
Exec=bash $install_dir/gteakup.sh
Icon=$install_dir/gteakup.png
Terminal=false
StartupNotify=false
EOF
    chmod u+x $HOME/Desktop/GTeaKup.desktop  # give execution permission to desktop file.
else
    # ask user to install sox which is needed to use play command
    echo -e "The program 'play' is currently not installed.  You can install it by typing:\nsudo apt-get install sox"
fi

Instrução

  • coloque isto install.sh junto com outros arquivos em um zip Arquivo. Não há necessidade de fornecer .desktop arquivo, script vai fazer um.
  • copie o arquivo zip para outros sistemas e descompacte-os.
  • apenas corra bash install.sh, ele cuidará do resto, incluindo o coping dos arquivos em locais apropriados e criará um arquivo da área de trabalho para executá-lo.

Nota

Tenha cuidado com a posição de EOF dentro install.sh. Deve no início dessa linha.


1
2018-02-23 09:22