如果已经安装,则无法重新运行Java JPackage安装程序,第二次仅会在没有警告的情况下退出
无法重新运行JPackage安装程序如果已安装,则第二次运行时,似乎会在没有警告的情况下退出,这在Windows上是否正确 你可能会问我为什么要这么做 在我的例子中,我试图为我的Java应用程序构建一个JPackage安装程序,所以我构建它并安装它,然后调整设置,重建它并尝试重新安装。我花了一些时间才发现,除非卸载第一次安装(使用控制面板、程序和功能),否则无法重新安装 我的案例可能不是通常的用例,但它只是在没有给出任何理由的情况下退出是不正确的 这还意味着,如果我向客户部署了新版本,并且我以后需要修改安装程序,而不是修改版本号以便用户重新安装,这通常可能是最佳做法,但如果应用程序本身没有更改,我不会特别想做这件事如果已经安装,则无法重新运行Java JPackage安装程序,第二次仅会在没有警告的情况下退出,java,installation,java-14,jpackage,Java,Installation,Java 14,Jpackage,无法重新运行JPackage安装程序如果已安装,则第二次运行时,似乎会在没有警告的情况下退出,这在Windows上是否正确 你可能会问我为什么要这么做 在我的例子中,我试图为我的Java应用程序构建一个JPackage安装程序,所以我构建它并安装它,然后调整设置,重建它并尝试重新安装。我花了一些时间才发现,除非卸载第一次安装(使用控制面板、程序和功能),否则无法重新安装 我的案例可能不是通常的用例,但它只是在没有给出任何理由的情况下退出是不正确的 这还意味着,如果我向客户部署了新版本,并且我以后
更新:通过查看TaskManager发现它仍在运行,但似乎没有做任何事情,也没有向用户提供任何指示这可能会修复重新安装的问题 在我的例子中,我创建jpackage安装程序,安装它,创建一个新的安装程序(基于Inno安装程序),然后自动卸载jpackage 我认为,在您的情况下,可能需要卸载第一次安装,因为安装程序可能会检测到它已经安装了相同的版本 在我的例子中,我使用Ant任务自动卸载
<target name="uninstall" depends="init">
<exec executable="wmic.exe">
<arg value="product" />
<arg value="where" />
<arg value="description='${full.name}'" />
<arg value="uninstall" />
</exec>
</target>
不知道这在Mac或Linux上是否有帮助,但Windows安装程序会在您运行应用程序时自动删除旧版本,因此您只需设置一个方案,在每个版本上更改版本号,以避免每次都不安装旧版本 要做到这一点,您可以将版本号设置为“YY.MM.DDHH”,以便版本号每小时更改一次,并减少卸载 蚂蚁步骤:
<tstamp>
<format property="appver" pattern="yy.MM.ddHH" />
</tstamp>
<exec executable="jpackage">
<arg line="--app-version ${appver}"/>
...
</exec>
set appver=%date:~6,2%.%date:~3,2%.%date:~0,2%%time:~0,2%
jpackage --app-version %appver% ...