请注意:我已创建 this GitHub project right here可以用来完美地重现我所看到的问题。
<小时/>这里的 Java 8尝试使用 Launch4J通过gradle-launch4j Gradle 插件用于构建 Windows native EXE 应用程序。我正在 Mac 上开发 Java Swing 应用程序,但该应用程序必须在 Windows 10 上作为 Windows EXE 运行。我还使用 ShadowJar 构建我的独立“ fat jar 子”。
我可以构建我的(Swing)应用程序的 fat jar,然后通过 java -jar build/lib/myapp.jar 在我的 Mac 上运行它。启动和运行都没有问题。
这是我的 Launch4J Gradle 配置:
launch4j {
mainClassName = 'com.example.windows.hello.HelloWindowsApp'
icon = "${projectDir}/icon.ico"
jdkPreference = 'jdkOnly'
initialHeapSize = 128
jreMinVersion = '1.8.0'
jreMaxVersion = '1.8.9'
maxHeapSize = 512
stayAlive = false
bundledJre64Bit = true
bundledJrePath = '../hello-windows/jre8'
}
当我运行 ./gradle clean build ShadowJar createExe createDistro
时,它会生成:
hello-windows.zip/
hello-windows.exe --> The Windows EXE built by the 'createExe' task
lib/* --> The lib/ dir for the EXE that is also built by the `createExe` task
jre8/ --> OpenJDK JRE8 (copied from the libs/jre8 dir)
因此,我复制该 ZIP 文件并将其移植到 Windows 10(64 位)计算机。我提取 ZIP 并通过在 Windows 资源管理器中双击它来运行 EXE(我可以确认确实将 EXE 视为应用程序类型)。首先我看到这个:
为什么会发生这种情况?是否可以更改任何 Launch4J 配置/设置以避免发生这种情况?
提前致谢!
最佳答案
您需要按照描述对 launch4j 创建的可执行文件进行签名 here以防止 SmartScreen 阻止其运行。另请参阅 support forum 中的相关讨论.
关于windows - Gradle Launch4J EXE 不受 Windows 10 信任,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59073220/