标签: launch4j

Launch4j,NSIS和重复的固定Windows 7任务栏图标

我遇到一个问题,当我在Windows 7中为应用程序固定任务栏图标时,单击该图标将为该程序打开一个单独的(重复的)图标,而不是将其与用于调用它的快捷方式分组在一起。

应用程序本身是一个.jar文件,已使用Launch4j将其打包为.exe。这就可以解释为什么图标被复制了-Launch4j调用了一个单独的javaw.exe进程,并且当您开始执行此类操作时,AppModelUserID看上去很混乱。

根据这篇文章,解决方案是通过一些本机代码指定AppModelUserID。按照此处给出的示例,我已成功在应用程序中调用了JNA代码,并且看来我已将其正确设置为“ MyCompany.MyApp”形式的值。调用“ get”函数将返回我为其设置的值,因此在应用程序方面一切正常。

...但是那是该解决方案停止的地方!我不认为这是结局,因为它肯定不能解决我的问题!似乎需要的是创建的快捷方式具有相同的 AppModelUserID,这是我对MSDN文档的解释。

由于我使用NSIS作为安装程序,因此我使用WinShell插件在安装时设置应用程序快捷方式的属性。具体来说,该调用反映了以下示例:

WinShell::SetLnkAUMI "$SMPrograms\MyApp\MyApp.lnk" "${MyApp_AppUserModelId}"
Run Code Online (Sandbox Code Playgroud)

那就是我拖到任务栏上的那个……但是同样,没有骰子。该应用程序仍在单独的固定图标中打开。此时,我无法检查是否正确设置了快捷方式属性,因为似乎没有工具可以检查给定快捷方式的AppModelUserID

当我直接创建直接指向.jar文件的快捷方式时,一切正常,但是尝试将JRE安装到NSIS中却遇到了麻烦,而我已经经历了很多尝试,并且要避免这种麻烦。

我非常感谢任何可以帮助我解决这一困扰问题的指南!我总是被这些愚蠢的小美学问题困扰,这些问题可能很难解决...

谢谢!

编辑:在我无法验证快捷方式的AppModelUserID实际上是否正确设置后,按照Anders的建议,通过切换到NSISANSI版本解决了问题。

java taskbar nsis launch4j windows-7

5
推荐指数
1
解决办法
2888
查看次数

在pom.xml中转义属性

我想在pom.xml中转义一个属性.不是在资源中,我知道可以使用过滤器.例如,我尝试使用launch4j插件,如下所示:

<plugin>
<groupId>org.bluestemsoftware.open.maven.plugin</groupId>
            <artifactId>launch4j-plugin</artifactId>
                <executions>
                    <execution>
                        <id>l4j-cli</id>
                        <phase>install</phase>
                        <goals>
                            <goal>launch4j</goal>
                        </goals>
                        <configuration>
                            <headerType>console</headerType>
                            <outfile>../out.exe</outfile>
                            <dontWrapJar>true</dontWrapJar>
                            <jar>./../out.jar</jar>
                            <icon>../icon.ico</icon>
                            <chdir>.</chdir>
                            <customProcName>true</customProcName>
                            <downloadUrl>http://www.oracle.com/technetwork/java/javase/downloads/index.html</downloadUrl>
                            <classPath>
                                <mainClass>com.stack.Main</mainClass>
                                <addDependencies>true</addDependencies>
                                <jarLocation>./lib</jarLocation>
                            </classPath>
                            <jre>
                                <opts>
                                    <opt>-DconfigBasePath=${ALLUSERSPROFILE}/dir</opt>
       </opts>                          
                            </jre>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
Run Code Online (Sandbox Code Playgroud)

并且$ {ALLUSERSPROFILE}不能由maven解释,而是由launch4j生成的程序.我尝试:

\${ALLUSERSPROFILE}
\\${ALLUSERSPROFILE}
$${ALLUSERSPROFILE}
Run Code Online (Sandbox Code Playgroud)

<properties>
   <dollar>$</dollar>
</properties>
${dollar}{ALLUSERSPROFILE}
Run Code Online (Sandbox Code Playgroud)

但没什么用.

java maven-2 launch4j

5
推荐指数
1
解决办法
2946
查看次数

如何在Launch4j中使用Bundle JRE选项

我已经使用Java一段时间了,足够长的时间来开始用GUI创建我自己的程序,而不仅仅是在Eclipse中运行的教科书中的一些示例程序.我希望通过将可执行文件Jar包装到Exe中,使我的程序对用户,特别是Windows用户更加友好.所以我找到了Launch4j,它似乎做得非常好,但我不知道该程序中超过一半的选项意味着什么(我花了一个小时来弄清楚如何让它来制作一个功能性的Exe).我把它递给了一个油炸试验,他回到我身边说他没有发现JRE错误.好吧,我想知道如何强制最终用户拥有JRE然后我注意到Launch4j中的捆绑JRE选项.但是我该如何使用它?我是否下载了Windows的JRE脱机安装程序,如果找不到已安装的安装程序,它将运行吗?那么系统的正确版本(32位v 64位)怎么样?我想我以为我会把它带到这个包含JRE的神秘软件包中,我的包装程序会用它来运行.只是有人可以请告诉我如何使用该功能,如果我需要下载什么,等等.

如果Launch4j不是最好的程序,那么请推荐别的东西,我刚刚开始进入这个,因为我知道有更好的包装.

java bundle exe launch4j

5
推荐指数
1
解决办法
1万
查看次数

使用Launch4J将JRE捆绑到exe中

我正在尝试使用launch4j将JRE捆绑到我的exe中.

我的文件夹结构如下 -

|- test
    |- jre(copied from my windows installation of jre)
        |-bin
        |-lib
    |- jretest.jar (the jar file I am using to create my exe)
    |- jretest.exe (the output exe file)
Run Code Online (Sandbox Code Playgroud)

在Launch4j中,我设置了Bundled JRE Pathas jre.

到目前为止exe工作正常.

但是,当我将我的exe文件复制到别处并运行它时,我收到错误消息This application was configured to use a bundled Java Runtime Environment but the runtime is missing or corrupted.

我搜索了SO并发现了以下问题,但无法让我的应用程序使用那里给出的建议.

如何将JRE捆绑到Java应用程序的EXE中?Launch4j说"运行时丢失或损坏."

如何将JRE与Launch4j捆绑在一起?

知道这里捆绑的jre会出现什么问题吗?

我怎样才能创建一个独立的exe?

我不想为我的应用程序制作安装程序,只是打算运行它.

任何帮助将不胜感激.

java launch4j

5
推荐指数
1
解决办法
6418
查看次数

如何使用launch4j包装还提供命令行界面的GUI应用程序?

我正在开发Java应用程序,主要是GUI应用程序。但是,它也提供了命令行界面。我可以将命令行参数分为三种不同的类型:

  • 第一种类型的参数更改GUI的行为。
  • 第二种类型以特定状态启动GUI。
  • 第三种类型使应用程序直接执行操作而不显示GUI。

当我使用执行应用程序时java -jar <application-name>.jar -parameter,一切都会按预期进行。应用程序执行要求执行的操作。在应用程序关闭或完成后,shell提示返回。

问题

当我使用launch4j从jar文件创建Windows包装器时,此行为会更改。shell提示总是立即返回。因此,我仍然可以传递命令行参数,但是无法通过终端与应用程序进行交互。它不打印任何写到stdout或stderr的内容,也不能从stdin读取任何内容。

如何配置launch4j创建一个exe包装器,该包装器提供与包装后的jar文件相同的命令行行为?

附加信息

我将launch4j maven插件用于以下配置:

<plugin>
    <groupId>com.akathist.maven.plugins.launch4j</groupId>
    <artifactId>launch4j-maven-plugin</artifactId>
    <version>1.7.8</version>
    <executions>
        <execution>
            <id>launch4j</id>
            <phase>package</phase>
            <goals>
                <goal>launch4j</goal>
            </goals>
            <configuration>
                <headerType>gui</headerType>
                <stayAlive>true</stayAlive>
                <outfile>path/to/outfile.exe</outfile>
                <jar>path/to/infile.jar</jar>
                <dontWrapJar>false</dontWrapJar>
                <errTitle>Error in Launcher</errTitle>
                <classPath>
                    <mainClass>com.example.Launch</mainClass>
                    <addDependencies>false</addDependencies>
                </classPath>
                <icon>path/to/icon.ico</icon>
                <jre>
                    <minVersion>1.8.0</minVersion>
                    <initialHeapSize>512</initialHeapSize>
                    <maxHeapSize>1024</maxHeapSize>
                </jre>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

launch4j文档说,设置的给定组合headerType=guistayAlive=true等待应用程序关闭,情况并非如此。

由于我没有Windows机器,因此我无法尝试设置时发生的情况headerType=console。文档说,这会使包装程序始终等待并返回应用程序的退出代码。但是,由于我的应用程序主要是GUI应用程序,所以我想知道此设置是否有负面影响。在这一点上,我开始问自己,为什么我希望包装的应用程序具有不同于jar文件的其他命令行行为。

java shell launch4j maven

5
推荐指数
1
解决办法
1957
查看次数

Gradle Launch4J EXE 不受 Windows 10 信任

请注意:我在这里创建了这个 GitHub 项目,可以用来完美地重现我所看到的问题。


Java 8尝试通过gradle-launch4j Gradle 插件使用Launch4J来构建 Windows 本机 EXE 应用程序。我正在 Mac 上开发 Java Swing 应用程序,但该应用程序必须在 Windows 10 上作为 Windows EXE 运行。我还使用 ShadowJar 构建我的独立“胖罐子”。

我可以构建我的(Swing)应用程序的 fat jar,然后通过java -jar build/lib/myapp.jar. 启动和运行都没有问题。

这是我的 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'
}
Run Code Online (Sandbox Code Playgroud)

当我运行时./gradle clean build …

windows launch4j gradle java-8 gradle-plugin

5
推荐指数
1
解决办法
1862
查看次数

如何在 Launch4j 中添加 VM 参数

我在尝试创建.exe文件来运行 JavaFX 应用程序时遇到了一些困惑。

在 Eclipse 中我使用 VM 参数:

--module-path "\path\to\javafx-sdk-14.0.1\lib" --add-modules javafx.controls,javafx.fxml
Run Code Online (Sandbox Code Playgroud)

但我不确定如何添加它Launch4j才能运行它。有人可以告诉我如何添加它吗?

java javafx jvm-arguments launch4j

5
推荐指数
1
解决办法
3205
查看次数

JVM命令启动选项重复

我发现我们正在使用的遗留软件,其启动属性格式错误,因此它接收这两个不相等的xmx作为属性:

java -jar myapp.jar -Xmx128m -Xmx512m 
Run Code Online (Sandbox Code Playgroud)

我无法访问启动器源代码(无法修改它),所以我问,这些参数的重复有什么影响?我可以这样离开吗,还是我应该担心?哪一个将适用?

使用的JVM是JRE 6更新18

java jvm launch4j

4
推荐指数
1
解决办法
1439
查看次数

如何在命令行中运行lauch4j?

我是launch4j的新手.我想用launch4j创建exe文件.我已经关注了lauch4j教程的这个链接.现在,我想使用launch4j在命令行中创建exe文件?我尝试过以下命令,但它不起作用.

>launch4j.exe sample.jar
Run Code Online (Sandbox Code Playgroud)

launch4j

4
推荐指数
1
解决办法
3158
查看次数

我用Launch4j创建的.exe不运行

我能够从可执行jar创建一个.exe文件.从Launch4j我可以测试包装器,日志上的输出是我所期望的.但是,如果我尝试从命令行或从Windows资源管理器运行exe,则不会发生任何事情.没有错误,没有按预期输出到控制台.该程序也应该编辑一个文本文件,当我使用批处理文件运行jar时会发生这种情况,但是当我运行exe时却不会.这都是在同一台计算机上,所以我怀疑它是JRE的一个问题.我已经广泛搜索了StackOverflow,但没有发现任何有助于这种情况.我确实发现这个帖子有类似的问题:Launch4J可执行文件没有按预期执行但没有人真正回答了这个问题.提前谢谢你的帮助

java executable jar launch4j

4
推荐指数
1
解决办法
5265
查看次数