install4j updater 是否支持多交付渠道(稳定版/测试版/每晚)?
does install4j updater support multi delivery channels (stable / beta / nightly)?
我正在使用 install4j 打包我的 java 应用程序。我沿着便携式档案分发所有平台的安装程序。到目前为止,我一直在使用自己开发的更新机制,它有一些限制主要与权限有关。我正在考虑将更新过程委托给 Install4j,但我不确定它是否可以满足我的需求(至少我还没有找到如何实现我所需要的)。我的应用程序具有以下功能:
- 用户可以 select 交付渠道(稳定/测试版/夜间)
- 该应用程序具有根据频道检查更新是否可用并指向正确的新人工制品的逻辑
- 由于写入权限,我的应用在某些情况下无法更新过程
Install4J 可以管理这样的用例吗?我需要使用所有更新参数调用 install4j updater,因为我认为我无法通过单个 update.xml 文件实现我想要的。我无法通过阅读文档找到如何做到这一点,但考虑到多交付渠道很常见,我想我可能错过了它。
提前感谢您的帮助并为我指明了正确的方向。
install4j中的更新下载器只是一个模板,大家可以根据自己的需要进行修改。
在您的情况下,每个频道需要不同的 updates.xml
,例如 updates_stable.xml
、updates_beta.xml
和 updates_nightly.xml
。
更新下载器模板已设置为处理 update.xml
的变量 URLs。如果找到“检查更新”操作,您会看到其“更新描述符 URL”属性 设置为
${installer:updatesUrl?:${compiler:sys.updatesUrl}}
这意味着如果指定安装程序变量 updatesUrl
,则使用该值。如果不是(这是默认设置),则使用编译器变量 sys.updatesUrl
的内容,这是在“安装程序->更新选项”步骤中指定的值。
如果您使用参数启动更新下载程序
-VupdatesUrl=<URL for updates.xml>
安装程序变量已设置并将被使用。
或者,您可以使用可在安装程序中设置的永久安装程序变量,例如使用“设置变量”操作。在这种情况下,必须将变量写入响应文件。必须选择“设置变量”操作的“注册响应文件”属性,或者您必须调用
context.registerResponseFileVariable("updatesUrl");
然后,您必须将“加载响应文件”操作添加到更新下载器的“启动”节点,变量将自动设置其持久值。
另一种选择是使用特定于用户的首选项存储,在这种情况下,您可以在安装程序中使用“将安装程序变量保存到 Java 首选项存储”操作和“从中加载安装程序变量”更新下载器中的 Java 首选项存储”操作以保留安装程序变量的值。后一种方法的优点是您可以使用 API
com.install4j.api.launcher.Variables.saveToPreferenceStore(...)
在您自己的代码中更改变量值而无需提升权限。
我正在使用 install4j 打包我的 java 应用程序。我沿着便携式档案分发所有平台的安装程序。到目前为止,我一直在使用自己开发的更新机制,它有一些限制主要与权限有关。我正在考虑将更新过程委托给 Install4j,但我不确定它是否可以满足我的需求(至少我还没有找到如何实现我所需要的)。我的应用程序具有以下功能: - 用户可以 select 交付渠道(稳定/测试版/夜间) - 该应用程序具有根据频道检查更新是否可用并指向正确的新人工制品的逻辑 - 由于写入权限,我的应用在某些情况下无法更新过程
Install4J 可以管理这样的用例吗?我需要使用所有更新参数调用 install4j updater,因为我认为我无法通过单个 update.xml 文件实现我想要的。我无法通过阅读文档找到如何做到这一点,但考虑到多交付渠道很常见,我想我可能错过了它。
提前感谢您的帮助并为我指明了正确的方向。
install4j中的更新下载器只是一个模板,大家可以根据自己的需要进行修改。
在您的情况下,每个频道需要不同的 updates.xml
,例如 updates_stable.xml
、updates_beta.xml
和 updates_nightly.xml
。
更新下载器模板已设置为处理 update.xml
的变量 URLs。如果找到“检查更新”操作,您会看到其“更新描述符 URL”属性 设置为
${installer:updatesUrl?:${compiler:sys.updatesUrl}}
这意味着如果指定安装程序变量 updatesUrl
,则使用该值。如果不是(这是默认设置),则使用编译器变量 sys.updatesUrl
的内容,这是在“安装程序->更新选项”步骤中指定的值。
如果您使用参数启动更新下载程序
-VupdatesUrl=<URL for updates.xml>
安装程序变量已设置并将被使用。
或者,您可以使用可在安装程序中设置的永久安装程序变量,例如使用“设置变量”操作。在这种情况下,必须将变量写入响应文件。必须选择“设置变量”操作的“注册响应文件”属性,或者您必须调用
context.registerResponseFileVariable("updatesUrl");
然后,您必须将“加载响应文件”操作添加到更新下载器的“启动”节点,变量将自动设置其持久值。
另一种选择是使用特定于用户的首选项存储,在这种情况下,您可以在安装程序中使用“将安装程序变量保存到 Java 首选项存储”操作和“从中加载安装程序变量”更新下载器中的 Java 首选项存储”操作以保留安装程序变量的值。后一种方法的优点是您可以使用 API
com.install4j.api.launcher.Variables.saveToPreferenceStore(...)
在您自己的代码中更改变量值而无需提升权限。