我最近查看了jpackage,有任何选项会自动将应用程序添加到启动中,例如考虑我有,
应用程序.java
package org.openjfx;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
* JavaFX App
*/
public class App extends Application {
@Override
public void start(Stage stage) {
var label = new Label("Hello, JavaFX");
var scene = new Scene(new StackPane(label), 640, 480);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}
模块信息.java
module Sample {
requires javafx.controls;
opens org.openjfx;
}
使用maven生成运行时,
mvn javafx:jlink
然后生成安装程序,
jpackage --win-dir-chooser --runtime-image ./target/image/ --name Sample-Javafx --module Sample/org.openjfx.App -d ./target/bin/
这一切都工作正常,但我想要的是在启动时注册 App.java 并在安装后启动此应用程序是否可以使用 jpackage 或者 App.java 中有任何技巧可以实现此目的?
当您在 Windows 上运行时,我知道如何在 Linux 上解决这个问题。
JPackage 将创建一个 Debian 软件包。这样的包主要包含两个 tar 球:主要的一个包含需要安装在文件系统中的文件。另一个包含元数据(我们这里有什么包?)以及四个脚本,每个脚本都将在特定事件中运行:
回到你的问题,我所要做的就是提供我的 postinst 脚本版本,该脚本会将应用程序注册为自动启动,如下 https://docs.oracle.com/en/java/javase/17/jpackage /override-jpackage-resources.html#GUID-1B718F8B-B68D-4D46-B1DB-003D7729AAB6
也许 Windows 版本有类似的东西?
要将程序添加到自动启动,您需要自定义
jpackage
使用的 Wix 配置。第一次运行时执行此操作:
jpackage --temp <some directory> ...
有关
jpackage
参数的详细信息可以在这里找到。
这将创建您的
jpackage
版本使用的 Wix 配置快照。在该目录中,您应该找到 main.wxs
文件,它是安装程序的主要配置文件。创建一个 resources
文件夹并将 main.wxs
文件的副本放入该文件夹中。您可以通过添加 使
jpackage
使用您的配置
--resource-dir resources
首次运行后,您应该不会看到任何差异,但现在,您可以通过更改
main.wxs
目录中的 resources
文件来自定义 Wix 安装程序。
您可以通过添加适当的 Windows 注册表项来使程序自动启动 - 在 <Feature>
标记之前添加以下代码片段
<DirectoryRef Id="TARGETDIR">
<Component Id="AutostartComponent" Guid="{your-unique-uuid}">
<RegistryKey Root="HKCU" Key="Software\Microsoft\Windows\CurrentVersion\Run">
<RegistryValue Type="string" Name="$(var.JpAppName)" Value=""[INSTALLDIR]$(var.JpAppName).exe"" />
</RegistryKey>
</Component>
</DirectoryRef>
确保您的
exe
文件名遵循代码片段中使用的模式。
接下来,在
<Feature>
标签的末尾添加对创建的组件的引用:
...
<ComponentRef Id="AutostartComponent"/>
</Feature>
有关在安装过程中添加注册表项的详细信息可以在此处找到。