在 Linux 中以用户友好的方式执行下载的文件

User-friendly execution of downloaded file in Linux

在我的网站上,我需要让用户能够在 Linux 上下载并轻松启动我的可执行文件(AppImage 二进制文件)。 对于 Windows 版本,它只是 .exe,它在下载并单击后起作用:

  1. 下载文件
  2. 单击浏览器下载面板中的文件以启动它

Linux 用户现在需要执行以下操作:

  1. 下载文件
  2. 从浏览器下载面板打开包含文件的文件夹
  3. 右击添加exec权限
  4. 单击 "Allow execution of this file" 复选框
  5. 按确定
  6. 点击文件启动它

普通用户很难解释这个流程,它会让用户离开。

是否可以像 Windows 那样将其最小化到最少的点击次数?

感谢任何建议,以实现最少的点击次数。我可以为任何格式编译应用程序(它在电子上,但我可以在上传前处理它)

我考虑过使用 .deb 。它只会限制基于 Debian 的应用程序,但同时我没有找到 运行 post 安装到 exec 应用程序的能力的主要问题,我不想让用户进入开始菜单.

可执行位是一种基本的 UNIX 安全措施,因此解决这个问题并不容易(有充分的理由)。考虑到这一点,对于下载文件的特定情况,Windows 也应用了一些限制(特殊的 NTFS 流告诉 Windows Explorer 警告来自 Internet 的可执行文件的危险)。

您当然可以将您的应用程序作为 .tar.something 存档提供并在其中存储可执行文件。提取后,它们通常会设置正确的执行位。

deb-package 的选项也可以解决您的问题(对于某些用户),但有点复杂:

  • 用户下载deb包
  • 用户点击 deb 包并安装了一些程序,该程序提供了用于安装包的 GUI(如 gdebi)。就像 Windows 一样,会有一些 "security check" 以对话框的形式出现,用户需要在其中输入 (sudo) 密码。之后,apt 将安装软件包
  • 如果包创建正确,它可以正确传输可执行位,这样之后就不需要明确的权限更改。如果出于某种原因需要做一些 post-安装,Debian 软件包可以提供 postinst 脚本,在软件包安装结束时 运行(作为 root!)。

无论如何,由于处理可执行文件是Linux上的常见过程,它可能不会像预期的那样吓跑那么多用户。如果您想让用户感到舒适,请按他们 expect/like 提供包。在 Windows 上,我认为这是一个 .msi 包,而在 Linux 上,我更喜欢与我的发行版相对应的包(.deb.rpm)。

如果您希望用户定期更新他们的软件包(有利于安全),那么提供一个 "repository" 用户可以从中添加和安装您的软件包会很有帮助。当然,"the best" 有一个包作为分发的一部分,但这是相当大的努力,需要通过很多 "quality assurance gates" :)