我正在研究一個我希望它自動更新的JavaFX應用程序。我正在使用JavaFX Maven Plugin併爲每個操作系統構建本地包(JavaFX Maven插件使用javapackager):Linux,Windows和OSX。我使用最新的JDK 8u74,因爲它具有「輔助發射器」功能,這應該可以在我的包中捆綁多個本地啓動器。我加在pom.xml兩個發射具有:防止jfx packager的輔助啓動器在Windows中觸發UAC /提升的特權
<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後,有下路 \用戶\用戶名\ AppData的\本地\ ourApp 2次發射與相同的JVM捆綁在一起,即 。我們打電話給第一個啓動器MainApp和第二個AnotherApp。
現在的問題是:在Windows上,AnotherApp將需要UAC(管理員權限),而MainApp則不需要。
顯然,我要求應用程序安裝在... \ AppData \ Local是因爲我不希望它觸發提升的特權。我也在這裏看過:http://mark.koli.ch/uac-prompt-from-java-createprocess-error740-the-requested-operation-requires-elevation,但它不能解決問題。
所以我的問題是:當有兩個發射器時,爲什麼輔助發射器需要提升的特權?我怎樣才能避免這種情況?
這是一個非常有趣的益智和挑戰性的問題,如果你得到一個答案,也請告訴我。 –