linux - 在 Linux 中用户友好地执行下载的文件
问题描述
在我的网站上,我需要让用户能够在 Linux 上下载并轻松启动我的可执行文件(AppImage 二进制文件)。对于Windows
版本,它只是.exe
在下载并单击后才起作用:
- 下载文件
- 单击浏览器下载面板中的文件以启动它
对于 Linux 用户现在需要执行以下操作:
- 下载文件
- 从浏览器下载面板打开包含文件的文件夹
- 右键添加执行权限
- 单击“允许执行此文件”复选框
- 按确定
- 单击文件以启动它
对于普通用户来说很难解释这个流程,它会让用户离开。
是否可以像在 Windows 上那样将其最小化到最少的点击?
任何建议都表示赞赏以实现最少的点击。我可以为任何格式编译应用程序(它在电子上,但我可以在上传之前对其进行处理)
我考虑过使用.deb
. 它只会限制基于 Debian 的应用程序,但主要问题是我没有找到将安装后运行到 exec 应用程序的能力,并且我不想要求用户进入开始菜单。
解决方案
可执行位是基本的 UNIX 安全措施,因此解决这个问题并不容易(有充分的理由)。考虑到这一点,对于下载文件的特定情况,Windows 也应用了一些限制(特殊的 NTFS 流告诉 Windows 资源管理器警告来自 Internet 的可执行文件的危险)。
您当然可以将您的应用程序作为.tar.something
存档提供并在其中存储可执行文件。提取后,它们通常会设置正确的执行位。
deb-package 的选项也可以解决您的问题(对于某些用户),但有点复杂:
- 用户下载deb包
- 用户单击 deb 包并安装了一些程序,该程序提供了用于安装包的 GUI(如 gdebi)。就像在 Windows 上一样,会有一些以对话框形式出现的“安全检查”,用户需要在其中输入(sudo)密码。之后,apt 将安装该软件包
- 如果包创建正确,它可以正确传输可执行位,这样之后就不需要显式更改权限。如果由于某种原因需要在安装后做一些事情,Debian 软件包可以提供
postinst
在软件包安装结束时运行的脚本(以 root 身份!)。
无论如何,由于处理可执行文件是 Linux 上的常见过程,它可能不会像预期的那样吓跑这么多用户。如果您想让用户感到舒适,请按照他们的期望/喜欢的方式提供包。在 Windows 上,我认为这是一个.msi
包,而在 Linux 上,我更喜欢与我的发行版 ( .deb
, .rpm
) 相对应的包。
如果您希望用户定期更新他们的包(有利于安全),那么提供一个“存储库”是有帮助的,用户可以从中添加和安装您的包。当然,“最好的”是将软件包作为分发的一部分,但这是相当大的努力,需要通过很多“质量保证门”:)
推荐阅读
- azure - Azure 函数 - Powershell 和 Azure 存储表(插入或替换)
- c# - PowerShell / Asp.net c# / Exchange
- github - 如何在 Github Actions 中的 git 命令中呈现变量
- spring - Kotlin 的箭
和交易 - node.js - 对 mongoDB 的 Nodejs GET 请求返回未定义
- xml - 艰巨的 NLP 任务并帮助我使用更少的撒克逊变量
- c - 如何在c中实现定点数的幂运算
- json - PostgreSQL - 在 JSON 对象中聚合值而不指定键
- php - 如果我通过 Axios 从客户端调用但从服务器端调用它,cookie 不会保存在浏览器中。我不知道是什么原因
- linq - Asp.net Core 5.0 Linq Take(1).ElementAt(index)