windows - Gradle Launch4J EXE 不受 Windows 10 信任

标签 windows gradle java-8 gradle-plugin launch4j

请注意:我已创建 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 视为应用程序类型)。首先我看到这个:

enter image description here

为什么会发生这种情况?是否可以更改任何 Launch4J 配置/设置以避免发生这种情况?

提前致谢!

最佳答案

您需要按照描述对 launch4j 创建的可执行文件进行签名 here以防止 SmartScreen 阻止其运行。另请参阅 support forum 中的相关讨论.

关于windows - Gradle Launch4J EXE 不受 Windows 10 信任,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59073220/

相关文章:

java - 带有流 Spring 引导的 DTO 映射

windows - 在 VMWare VM 中运行 Vagrant

windows - 有没有办法以编程方式将焦点集中到 Windows 中的应用程序?

string - Gradle:如何过滤和搜索文本?

android - Android 与 OpenCV 3.4.0 和 NDK 的链接错误

Java 将文件复制到 zip AccessDeniedException

c - 调度程序不考虑 OpenCL 子设备亲和性

windows - 如何在 Windows 上从 "git gui"开始分离 "Git bash"?

android - 找不到 keystore 条目。但我知道它在那里

java - 我如何仅使用Mockito模拟带有参数的构造函数