如何为 Windows 部署 JavaFX 应用程序,以便包含我的 jar 的 exe 以管理员权限启动?我使用旧的部署方法进行了这项工作,但 Netbeans 的方式似乎更容易、更高效,所以我真的很想使用它。它有助于消除我通常需要做的许多额外步骤......
我确定解决方案就在我的眼皮底下,但我似乎无法弄清楚!
最好的祝福,
艾伦
如何为 Windows 部署 JavaFX 应用程序,以便包含我的 jar 的 exe 以管理员权限启动?我使用旧的部署方法进行了这项工作,但 Netbeans 的方式似乎更容易、更高效,所以我真的很想使用它。它有助于消除我通常需要做的许多额外步骤......
我确定解决方案就在我的眼皮底下,但我似乎无法弄清楚!
最好的祝福,
艾伦
提交赏金后,我可能会为您提供答案:如果您知道如何将自定义 INNO 脚本与 JavaFX 捆绑程序一起使用,则可以使用自定义 INNO 脚本并向注册表添加一个条目,该条目将强制应用程序运行提升:
[Registry]
Root: HKCU; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\Appcompatflags\layers"; 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 或 google 上找到)。提示:当你创建文件名时,它应该看起来像这样->“程序名称.exe.manifest”。
7) 使用 mt.exe 将清单注入到应用程序的 .exe 中。提示:以管理员权限启动 CMD 并像这样运行 mt.exe -> mt.exe -manifest "path\to\manifest\Program Name.exe.manifest" -outputresource:"\path\to\exe\that\needs\海拔”。
8) 在步骤 7 中注入清单后,使用 INNO Setup 创建您自己的设置,该设置重新打包由 Netbeans 的本机部署功能创建的确切结构(这将在新设置中包含新提升的 .exe)。
基本思路:
使用 Netbeans 部署 -> 本地安装 -> 注入海拔清单 -> 使用 INNO 设置创建者重新打包