JavaFX 应用程序更新无需管理员权限

标签 java javafx wix windows-installer updates

我有一个 JavaFX 应用程序,目前已使用 WIX Toolset 组装到 MSI 安装程序包中,与某个 JDK 发行版 (8u71) 捆绑在一起。

捆绑的原因是 JDK 版本 8u71 之后出现了证书识别问题,因此该应用必须独立于 Java 更新 - 之前使用 WebStart 来维护安装和更新。

现在的不同之处在于,MSI 安装程序始终需要管理员权限 - 无论是安装还是更新。这不再适合解决方案的要求。

该应用程序旨在在 Windows 10 下使用。

所以问题是:如果我想进行不需要管理员权限的更新,我有哪些可用选项? (初始安装需要管理员权限就可以)

例如:

  1. 是否可以以某种方式使 WebStart 使用用户的本地 JDK 安装而不是机器安装的 Java?

  2. JDK 和 Java 应用程序可以通过组装的安装程序(使用 WIX 工具集或其他工具)安装在用户上下文中吗?

  3. 有没有一种方法可以更新 JavaFX 应用程序,而无需实际启动用于初始安装的相同类型的 MSI 安装程序?

  4. 还有其他可能的解决方案吗?

最佳答案

我认为 JavaFX 的独立应用程序打包能够创建不需要管理员权限的安装程序。如果 Wix 不适合您,我建议您使用 innosetup (JavaFX 提供的另一个选项用于创建 Windows 安装程序)。我认为 innosetup 生成一个 EXE 安装程序,而不是 MSI 安装程序。

来自self contained packaging documentation ,对于 EXE 安装有说明:

By default, the generated package has the following characteristics:

  • Admin privileges not required
<小时/>

更新与初始安装的注意事项

您在问题中提到了更新而不是安装。我不知道独立 JavaFX 应用程序的更新框架,但如果标准安装程序不提供您所需的更新功能,您可以研究是否有可用的更新框架。我不能 100% 确定标准安装程序(例如通过 Wix 或 Innosetup 的 MSI/EXE 安装程序)处理更新而不仅仅是应用程序安装的能力。

<小时/>

关于用户空间与系统范围安装的注意事项

我的理解是,JavaFX 允许您在某些打包工具(例如 Wix 或 Innosetup,尽管我不知道哪个允许哪些选项)打包时选择使用哪种方法(用户空间或系统范围)。只需阅读链接的文档,它比我更好地解释了您的选择。

关于JavaFX 应用程序更新无需管理员权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46784919/

相关文章:

JavaFX TableView 列显示错误值

web.config IIS 中的 PHP(或其他)CGI 配置

java - 如何在 Java 中的 JTable 中显示来自 URL 的图像

java - 绑定(bind) JavaFx 中的 observableList

java - 迁移到 JDK 11 + JavaFX 11 时出现 RuntimeException

properties - 如果属性在安装时未设置,为什么在卸载时会被忽略?

wix - 如果没有的话,在注册表中设置默认值

java - 为什么应用于该对象的 System.out.println 会打印这个短语?

带有子类的 Java 反射

java - 如何从java中的线程更新MySql数据库