防止jfx packager的辅助启动器在Windows中触发UAC /提升特权

我正在开发一个我希望自动更新的JavaFX应用程序。 我正在使用JavaFX Maven Plugin,并为每个操作系统(Linux,Windows和OSX)构build一个本地包(JavaFX Maven插件使用javapackager)。 我正在使用最新的JDK 8u74,因为它具有“辅助发射器”function,这应该可以在我的包中捆绑多个本地启动器。 我在pom.xml中添加了两个启动器:

<groupId>com.zenjava</groupId> <artifactId>javafx-maven-plugin</artifactId> <version>8.2.0</version> <configuration> <mainClass>MainApp</mainClass> <appName>MainApp</appName> <verbose>true</verbose> <jfxMainAppJarName>application.jar</jfxMainAppJarName> <secondaryLaunchers> <launcher> <appName>AnotherApp</appName> <mainClass>AnotherApp</mainClass> </launcher> </secondaryLaunchers> </configuration> 

因此,在Windows上,用户安装此JavaFX应用程序后,在path\ User \ userName \ AppData \ Local \ ourApp下有两个启动器,与相同的JVM捆绑在一起。 我们打电话给第一个启动器MainApp和第二个AnotherApp。

现在的问题是:在Windows上,AnotherApp将需要UAC(pipe理员权限),而MainApp则不需要。

显然,我要求应用程序安装在… \ AppData \ Local是因为我不希望它触发提升的特权。 我也看了这里: http : //mark.koli.ch/uac-prompt-from-java-createprocess-error740-the-requested-operation-requires-elevation ,但它不能解决问题。

所以我的问题是:当有两个发射器时,为什么辅助发射器需要提升的特权? 我怎样才能避免这一点?

最后想出了这个有线问题。

问题是关于appName。 在我的代码中,实际上是使用<appName>Updater</appName>作为我的第二个启动器。 在Windows中,似乎他们编程的操作系统,使任何带有单词“更新”的.exe将触发UAC。

所以解决方法是:更改appName到别的…