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

时间:2020-07-01 12:25:43

标签: java izpack jpackage

以前,我使用 Izpack 来安装我的Java应用程序,并且当用户要安装新版本时,他们只是重新安装到了同一位置(C” / Program Files / Jthink / Jaikoz”),会用较新的文件替换较旧的文件,并且不需要用户先卸载旧版本。

我现在已经使用 JPackage (现在是Java,JDK 14的一部分)构建了应用程序的最新版本的安装程序,该安装程序将继续安装到同一位置。麻烦在于,因为JPackage强制采用了新的文件结构(应用程序和运行时子目录),我的文件不再覆盖现有文件,所以现在我把这两个安装混在一起了。

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

例如,此处显示的是旧文件组,只有系统和管理员有权修改/删除文件。

enter image description here

如果我以管理员身份运行,那么该代码会毫无问题地删除文件,但是客户通常无法以管理员身份运行,因此这无济于事。

我有什么选择?

1 个答案:

答案 0 :(得分:0)

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

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

您可以在此处生成 UUID:https://www.uuidgenerator.net/