2016-03-02 38 views
3

我正在研究一個我希望它自動更新的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,但它不能解決問題。

所以我的問題是:當有兩個發射器時,爲什麼輔助發射器需要提升的特權?我怎樣才能避免這種情況?

+0

這是一個非常有趣的益智和挑戰性的問題,如果你得到一個答案,也請告訴我。 –

回答

0

終於想出了這個有線問題。

問題是關於appName。在我的代碼中,我實際上是使用<appName>Updater</appName>作爲我的第二個啓動器。在Windows中,似乎他們編寫了操作系統,以便任何帶有單詞「update」的.exe都會觸發UAC。

因此,解決辦法是:改變APPNAME別的東西......

相關問題