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

使用JPackage或Java,如何删除使用预JPackage安装程序创建的文件,java,izpack,jpackage,Java,Izpack,Jpackage,以前我使用Izpack安装我的Java应用程序,当用户想要安装新版本时,他们只需重新安装到相同的位置(C“/程序文件/Jthink/Jaikoz”),这将用新文件替换旧文件,用户无需先卸载旧版本 我现在使用JPackage(现在是Java的一部分,JDK 14)为最新版本的应用程序构建了一个安装程序,它将继续安装到相同的位置。问题是因为JPackage强制执行了一个新的文件结构(应用程序和运行时子目录),我的文件不再覆盖现有文件,所以现在我的两个安装都搞砸了 因此,我在最新版本中添加了一些代码,

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

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

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

e、 g这里我们显示了一组旧文件,只有系统和管理员有权修改/删除这些文件

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


我的选项是什么?

您似乎必须将以下参数传递给jpackage,以识别同一应用程序的安装程序:--win upgrade uuid“your\u uuid\u string”。与Java/Oracle文档一样,如果他们尝试的话,他们对这一点再神秘不过了

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


您可以在此处生成UUID:

旧的izpack文件是否会干扰jpackage安装或程序的运行能力?如果不是,我可能会选择把它们留在那里。当程序留下工件时,我见过更严重的违规行为。不,它们不会干扰程序的运行能力,但1>它看起来很乱,2>如果浪费磁盘空间,3>(最重要的是)如果用户在里面看,他们可能会意外地运行错误的旧应用程序(Jaikoz64.exe,Jaikoz.bat),而不是新应用程序(Jaikoz.exe)看起来你和jpackage度过了愉快的一周,至少它让你远离了那些拥挤的海滩。在再次执行卸载+安装时,公用目录中的旧安装程序EXE文件是否在新应用程序的第二个发行周期内仍然有效?如果它们仍然存在,您会遇到相同的问题,但不是一次删除一个,您可以将dir重命名为dir.old,这样在新安装程序运行之前它们就不会出现问题了,并且有以管理员身份运行的说明。如果用户运行卸载,则没有问题,但用户通常不会这样做。