通用的跨平台安装程序存在吗?

6
我想知道是否有人尝试创建一种跨平台应用程序安装程序或安装程序实现的开放标准?也就是说,你可以从网站上下载单个文件,它的扩展名可被任何流行操作系统识别?我们为Mac有.pkg和.dmg文件,为Windows有.msi和普通.exe安装程序,对于Linux(在Debian的情况下)有.deb软件包,但我们没有每个平台的通用安装程序(比如.uoi(通用开放式安装程序))。
可能有人认为这种方法是不可能的,因为每个操作系统都有自己的结构和文件组织,但是该安装程序可以同时包含每个操作系统的指令,并且甚至可能包含共享文件(如图片、纹理或声音),因为它们可以在每个平台上重复使用并且它们是平台无关的。
我认为实现这样的安装程序是一个好主意,而且是免费的和开源的。

1
为什么会有这么多的踩?我认为这个话题不是那么容易回答的,也没有太多“现成”的解决方案。 - AlexM
2个回答

13
"主流": 共享的打包格式似乎难以实现。然而,有一些多平台部署工具可用。Installsite.org在这里提供了一个列表。我猜最常用的两个工具是(都是商业软件):

扩展宇宙: 还有一些其他的工具,其中之一是Bitrock InstallBuilder - 这是我不知道的工具,所以我既不能推荐也不能否定它。还有QtInstaller Framework,我还没有尝试过。看到有人推荐install4j。这里是install4j网站: 有哪些好的InstallAnywhere替代方案可以安装Java EE应用程序?

然后有Zero Install - 一个跨平台的打包和分发软件 - 对我来说是未知领域。还有Steam,这是一个跨平台的视频游戏分发、许可和社交游戏平台,由Valve开发和维护。用于购买、下载、安装、更新、卸载和备份视频游戏。它适用于Windows、OS X和Linux。类似于Steam的是Ubisoft的Uplay - 另一个视频游戏分发平台。也许应该提到PyInstaller?(跨平台Python程序)。

Java: 我曾经在SO问题中遇到过Oracle Universal Installer。这是一个基于Java的Oracle工具安装程序,是一个神秘的工具。旧版的Java Applets已经被弃用,即将过时的Java Web Start功能应该作为跨平台功能进行介绍。开发人员应该在2020年底之前迁移到jlink - Oracle PDF: Java Client Roadmap Update - Oracle PDF: Java Client Roadmap Update(已被取代)。

未来?: 没有真正的答案,但是有一些指针。就像我一直重复的那样,老实说我对这些工具不是很了解。我猜最近的XML / Zip格式可以更容易地跨平台,而以前的技术(例如Windows的COM结构化存储文件,即文件系统中的文件 - 数据流)用于MSI安装程序的旧文件格式则不是很方便。时间会证明一切。在云时代,谁知道会出现什么呢?

挣扎: 不过,我可以告诉你,作为公司应用程序打包人员(不是开发设置,只是部署它们),我一直在努力处理多平台安装程序,并且这些多平台安装程序一直很难处理。非常不标准,有时让人惊讶。例如:您启动一个setup.exe,它只启动第二个setup.exe,然后退出并报告无意义的内容,因此您根本不知道异步启动的实际安装发生了什么。那种事情。因此,您必须编写奇怪的脚本来检查安装进度等...处理多平台安装程序从来都不是一件有趣的事情。


一些链接:

旧提及:


我们已经使用Flexera InstallAnywhere超过10年了。它适用于简单的项目,但对于有大量第三方和补丁的大型应用程序,它很快就会不足,并引入大量浪费时间的问题。该工具是一个复杂的UI,填充一个巨大的XML文件。长期来看非常难以管理。 - buzz3791

1

我使用过安装程序构建工具,它是跨平台的.. 缺点是你需要付费..


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接