-
Notifications
You must be signed in to change notification settings - Fork 0
Configuring Self Update
引导程序是一个用于自我更新启动器的独立程序。按照这些说明将生成引导程序。
- 当引导程序加载时,它会选择一个文件夹来存储启动器的文件和mod包(这是代码)。
- 如果启动器已经下载(它会检查
launcher/
文件夹),引导程序将运行启动器。 - 如果没有下载:
- 从你的网站获取一个
latest.json
文件(你将在下面创建这个文件)。 - 使用
latest.json
文件中的URL下载真正的启动器。 - 运行启动器。
- 从你的网站获取一个
更新是如何工作的?实际上,引导程序不会更新:启动器会更新。下次引导程序启动时,引导程序将使用最新下载的版本。
其中一个示例文件是latest.json
。其中包含启动器下载链接以及最新的启动器版本。
文件内容如下:
{
"version": "4.0.1",
"url": "http://example.com/versions/4.0.1.jar"
}
版本应对应于build.gradle
中的版本(在源代码中)。将"4.0.1"更改为当前build.gradle
中的版本。
你也可以将版本更改为build.gradle
中的任意值。与包/模组版本不同,此版本必须是一个正确的版本字符串(X.Y.Z),并且你应始终增加它。注意,1.1.10大于1.1.9,1.2.0大于1.1.9和1.1.10。
旧版本的启动器要求启动器JAR使用pack200
压缩工具进行压缩。然而,该工具在Java 11中被弃用,并在Java 14中完全移除。这对我们来说是一个问题,因为直到最近,引导程序和启动器都假定启动器下载将是压缩的 - 但如果用户的Java版本高于14,将无法解压它。
如果你之前一直在分发压缩的启动器,建议为旧客户端提供最后一个压缩更新 - 更新到daa955fa
之后的启动器版本,并且最重要的是,更改它查找更新的位置(你还应该为新用户更新你的引导程序)。例如,创建一个新的更新JSON,位于https://example.com/latest-v2.json
,从现在起只用这个文件更新启动器。这允许你在确保新用户可以使用新Java版本的启动器的同时,保持对旧客户端的基本支持。
当前版本的启动器和引导程序完全忽略先前引入的packed
键,并始终写入以.jar
结尾的文件。引导程序不再能解压pack200文件,并将任何.jar.pack
文件视为不可用。
使用JDK附带的pack200工具处理启动器文件。将其上传到网站,并更改网站上latest.json中的URL。
pack200 --no-gzip launcher.jar.pack launcher-X.Y.Z.jar
(该命令在同一文件夹中从launcher-X.Y.Z.jar
生成launcher.jar.pack
。)
在文件夹launcher-bootstrap/src/main/resources/com/fabric-of-tetrahedron/Launcher-SKCraft/
中有:
-
lang/
,包含你应该更改的语言文件 -
bootstrap.properties
,包含你必须更改的重要设置 -
bootstrapper_icon.png
,引导程序图标
属性文件是最重要的文件之一。它看起来像这样:
homeFolderWindows=Example Launcher
homeFolder=.examplelauncher
launcherClass=com.skcraft.launcher.Launcher
latestUrl=http://example.com/latest.json
- "homeFolderWindows" 是在“我的文档”中的文件夹(例如
C:\Users\Name\Documents\Example Launcher
) - "homeFolder" 是用户主文件夹中的文件夹(例如
/home/user/.examplelauncher
) - "launcherClass" 不需要更改,除非你使用的是Fancy-Launcher
- "latestUrl" 应指向你网站上的
latest.json
- 再次重新编译整个启动器(使用
gradlew clean build
)。 - 双击
launcher-bootstrap/build/libs
中的.jar
文件以确保其正常工作。 - 检查你的主文件夹(BSD/Linux/Mac OS X用户)或“我的文档”(Windows用户),以查看你使用的文件夹名称。
如果一切正常,你就完成了!给玩家一个引导程序.jar
文件的副本。
虽然你可以提供.jar供下载,但它有两个缺点:(1)如果未安装Java,文件将无用;(2)你的启动器将没有程序图标。
有两种方法可以解决这个问题:
- 为Windows和Mac OS X创建.exe和.app包装器。
- 创建一个自动安装Java并设置快捷方式的安装程序。
由于大多数玩家已经安装了Java(毕竟他们是Minecraft玩家),发布一个.jar也是完全合理的。
有几个工具可以将.jar创建为.exe:
作者对launch4j有个人经验,可以推荐它,但其他选项可能更好。
警告: 最新版本的Internet Explorer和Google Chrome会将可执行文件标记为不可信,除非(1)它已被下载数千次,(2)它是从可信网站下载的,或者(3)它已使用“代码签名证书”数字签名,该证书需付费。要运行不可信的可执行文件,用户必须找到一个隐藏的“忽略此警告”按钮。
签名可执行文件是解决此问题的最简单方法,但它确实需要一定的费用。如果你希望通过增加下载次数来提高可执行文件的可信度,请确保使用引导程序(而不是启动器)作为可执行文件。为什么?每次你发布一个新的.exe,你都要从一个新的下载次数重新开始,但这对从不更新的引导程序来说不是问题。
使用引导程序,你仍然可以发布尽可能多的启动器更新。
苹果提供了工具来创建.jar文件的.app捆绑包。
没有Mac OS X的Windows用户可以使用Maven、Ant和Gradle创建.zip.app捆绑包,但这超出了本文的范围。由于启动器已经使用Gradle构建,因此修改构建文件以同时生成.zip.apps可能是最简单的方法。然而,Gradle用于构建这些Mac OS X应用程序的插件相对有限,作者甚至无法使用。
可以为你感兴趣的每个Linux发行版构建一个Linux包,但这超出了本文的范围。最简单的方法是仅为Linux用户提供.jar。
还有其他不错的选择,例如AppImage。
如果你更喜欢创建一个安装程序,有许多选项可供选择。作者没有创建Java应用程序安装程序的经验,因此以下仅为一般建议。
有些工具可以一键创建Windows、Mac OS X和Linux的安装程序。其他工具只能为一个平台创建安装程序。在寻找安装程序时,请注意其对Java应用程序的支持。例如,支持运行.jar文件和自动下载和安装JRE非常重要。
Windows有一个内置的安装程序框架,称为Windows Installer,其文件通常以.msi扩展名识别。某些针对Windows的安装程序构建器使用此框架,而其他则不使用。
这些工具中的一些涉及通过大量向导。其他工具涉及手动编写安装脚本/配置文件。
是一个流行的基于.msi的(Windows目标)安装程序构建器,但它有一个很大的学习曲线。
- 多平台目标:
- IzPack是一个基于Java的开源安装程序构建器。
- install4j是一个专门针对Java应用程序的商业安装程序构建器。
- InstallBuilder是一个商业安装程序构建器。
- Advanced Installer是一个流行的商业安装程序构建器。
- InstallShield是一个流行的商业安装程序构建器。
这绝不是一个详尽的列表。
每当你想推送更新时:
- 更新
build.gradle
中的版本(注意:与mod包版本不同,此版本应为正确的版本,例如#.#.#或#.#或#)。 - 重新编译启动器。
- 上传新的启动器.jar。
- 更新
latest.json
中的版本号和URL。
你永远不需要更新引导程序。
需要帮助吗?请参阅Getting-Help.
教程
启动器功能:
- Fancy-Launcher
- Portable-Mode
- Hidden-Modpacks
- Deploying-Server-Modpacks
- Launcher-Arguments
- Custom-JAR (.jar mods)
- Custom-Version-Manifest
自定义:
- Localization
- News-Page-Guide
- Custom-Microsoft-OAuth-application
- Using-an-IDE (Eclipse, IntelliJ)
附加阅读:
觉得此启动器有用吗?
捐赠给obw,目前的主项目的维护者:
捐赠给sk89q,最初的维护者: