![如何从 Shell 脚本创建本机应用程序?](https://linux22.com/image/849780/%E5%A6%82%E4%BD%95%E4%BB%8E%20Shell%20%E8%84%9A%E6%9C%AC%E5%88%9B%E5%BB%BA%E6%9C%AC%E6%9C%BA%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
我使用 Bash 和 Zenity 创建了一个小应用程序,我希望将其作为本机应用程序以及可以分发的软件包安装在我的系统上。我的应用程序有一个 .desktop 文件、一个 .png 图标和一个 .sh 文件。这些文件要放到哪里才能制作“本机”应用程序?我需要通过什么过程来创建可以编译以在另一个系统上安装此应用程序的软件包?
答案1
关于第一部分:首先,我将使脚本可执行,并.sh
从脚本和.desktop
文件中删除扩展名。如果您想在系统范围内使用它,则将整个目录(文件除外)复制.desktop
到/opt
。.desktop
然后文件将是:
[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
...并将其复制到/usr/share/applications
关于你问题的后半部分:看一下这里, 尤其这个如果你以前从未创建过 Debian 软件包,那么这是一个不错的开始。然后你将获得一个安装程序,如下所示这。当您通过软件中心安装它时,它会抱怨,因为通常的文件(如更改日志、版权等)未包含在内,但它可以正常工作。
顺便问一下,您是否知道双击和选择确定按钮时脚本的行为会有所不同?;)
答案2
install.sh
您可以使用下面给出的shell 脚本将您的tea timer
脚本安装到另一台机器。
#!/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
操作说明
- 将其
install.sh
与其他文件一起放入一个zip
文件中。无需提供.desktop
文件,脚本将创建一个。 - 将 zip 文件复制到其他系统并解压。
- 只需运行
bash install.sh
,它将处理其余工作,包括将文件复制到适当的位置并创建桌面文件来运行它。
笔记
注意EOF
中的 的位置install.sh
。它应该位于该行的开头。