如何为Windows部署JavaFX应用程序,以便包含我的jar的exe以管理员权限启动?我用我的旧部署方法进行了这项工作,但Netbeans的方式似乎更容易、更高效,所以我真的很想使用它。它有助于消除我通常需要做的许多额外步骤…
我确信解决方案就在我眼皮底下,但我似乎就是想不通!
致问候,
Alen
提交赏金后,我可能会给你一个答案:如果您知道如何将自定义INNO脚本与JavaFX捆绑器一起使用,您可以使用自定义INNO剧本并向注册表添加一个条目,该条目将强制应用程序在提升后运行:
[Registry]
Root: HKCU; Subkey: "SoftwareMicrosoftWindows NTCurrentVersionAppcompatflagslayers"; ValueType: string; ValueName: "{app}File Name.exe"; ValueData: "RUNASADMIN";
这并不理想(无论如何,对我来说),但最重要的是它有效。
如果你需要更多的澄清,请告诉我,我可以带你完成。
添加一个应用程序清单,指示应提升可执行文件。请参阅此MSDN博客条目。将静态应用程序清单(未嵌入)作为资源添加到项目中。
我找到的解决方案对我来说效果很好,下面是我的做法:
1) 在JavaFX Netbeans项目的jfx-impl.xml文件中定义自定义JDK位置。提示:搜索"plat.setBasedir"并将参数更改为:plat.setBasedir("path\to\jdk\and\not\jre")。这样可以确保JDK嵌入到您的安装程序中。
2) 为JavaFX项目设置本机部署(您认为适合您的项目的方式)。
3) 将应用程序部署为本机exe。
4) 在本地某处安装应用程序。
5) 安装Windows SDK 7.1。你需要清单工具(mt.exe),你会在程序文件/windows-sdk/中找到它。。。
6) 创建管理权限清单(示例可以在stackoverflow或谷歌上找到)。提示:当您将文件名设置为->"ProgramName.exe.manifest".时,文件名应该是这样的
7) 使用mt.exe将清单插入到应用程序的.exe中。提示:使用管理员权限启动CMD,然后像这样运行mt.exe->mt.exe-manifest"path\to\manifest\Program Name.exe.manifest"-outputsource:"\path\to\exe\the\needs\eelevation"。
8) 在步骤7中注入清单后,使用INNO setup创建您自己的安装程序,该安装程序重新打包由Netbeans的本机部署功能创建的确切结构(现在将在新安装程序中包括您新提升的.exe)。
基本思路:
使用Netbeans部署->本地安装->注入提升清单->使用INNO安装程序创建者重新打包