java - 使用 JPackage 或 Java 如何删除使用预 JPackage 安装程序创建的文件

标签 java izpack jpackage

以前我使用 Izpack 安装我的 Java 应用程序,当用户想要安装新版本时,他们只需重新安装到相同的位置 (C"/Program Files/Jthink/Jaikoz"),这会用新文件替换旧文件,用户无需先卸载旧版本。

我现在已经使用 JPackage(现在是 Java 的一部分,JDK 14)为最新版本的应用程序构建了一个安装程序,它会继续安装到相同的位置。问题是因为 JPackage 强制执行新的文件结构(应用程序和运行时子目录)我的文件不再覆盖我现有的文件,所以现在我的两个安装都搞砸了。

所以我在最新版本中添加了一些代码,以在启动应用程序时删除不再需要的旧文件。但问题是这失败了,因为我没有删除这些文件的权限,我认为这是因为它们是由安装程序安装的(我不确定)

例如,这里我们显示旧文件组,只有系统和管理员有权修改/删除文件。

enter image description here

如果我以管理员身份运行,那么代码会毫无问题地删除文件,但客户通常不会以管理员身份运行,因此这没有太大帮助。

我有哪些选择?

最佳答案

看来您必须将以下参数传递给 jpackage 才能识别同一应用程序的安装程序:--win-upgrade-uuid "your_uuid_string"。与 Java/Oracle 文档一样,如果他们尝试的话,他们对此不会更加神秘。

我还发现我也必须增加版本号,否则安装程序会快速闪烁并卡在后台什么都不做(直到你重新启动或结束任务):--app-version 1.0.1

您可以在这里生成一个 UUID:https://www.uuidgenerator.net/

关于java - 使用 JPackage 或 Java 如何删除使用预 JPackage 安装程序创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62676816/

相关文章:

java - 编译Izpack项目

java - IzPack 快捷方式噩梦

javafx - 分发使用自动模块的 JavaFX 应用程序

java - 我应该使用哪种设计模式来模拟人与角色的关系?

java - IzPack 可执行文件不适用于 linux 脚本

java - EventBus - 事件生命周期的一些问题

java - 打包应用程序时不使用 Trustmanager

java - 在 Linux 上创建 JPackage 安装程序 Java 应用程序时,linux-menu-group 应该是什么?

java - 如何获取类及其父类(super class)的注释列表

java - 生产者连接池 - Kafka