标签: winrun4j

Izpack失败,"没有用于文件扩展名的脚本引擎".js",

在使用Izpack 5 Beta 11的测试机器上,如果我使用运行捆绑的64位java的64位winrun4j exe启动install.jar,那么Izpack会抱怨

There is no script engine for file extension ".js",然后抱怨The installer could not launch with administrator permissions,然后尝试安装到默认安装目录失败,因为你没有管理员权限,安装到C:/ Program Files之外的另一个文件夹完成好了

如果我使用运行32位java的32位winrun4j安装程序运行它,它可以正常工作.

如果我只是在没有exe包装器的情况下直接运行install.jar

即java -jar install.jar

它使用32位JVM和64位JVM提供这些错误.

所以我目前唯一可行的解​​决方案是安装32位exe包装器,但我还需要64位包装器.

所以问题是

  1. 为什么32位exe工作和64位exe不工作
  2. 如果我尝试在没有包装器的情况下安装,为什么32bit或64bit都没有.

跟进

我发现这个线程有关javascript错误(但不是Izpack),并发现.js文件与Utlradedit相关联,Utlradedit是我用来编辑大多数文件类型的编辑器.

简单地将.js与Ultraedit无关联意味着现在我跑步时

  • java -jar install.jar在32bit install.jar上使用32bit java
  • java -jar install.jar在64bit install.jar上使用64位java
  • 32位winrun4j包装器.

它现在有效:)

但64位winrun4j现在无法启动安装并且根本无法工作,如果我从命令窗口运行,我可以看到

跑步

wscript C:\Users\MESH\AppData\Local\Temp\Installer.js 
 c:\Code\WidgetReleases\1.0_Beta_2\widget-windows64\JVM64\bin\javaw.exe 
 -Dizpack.mode=privileged -jar 
C:\Code\WidgetReleases\1.0_Beta_2\widget-windows64\install.jar
Run Code Online (Sandbox Code Playgroud)

他们跑

wscript C:\Users\MESH\AppData\Local\Temp\Installer.js 
 c:\Code\WidgetReleases\1.0_Beta_2\widget-windows64\JVM64\bin\javaw.exe 
 abort exit 
 -Dizpack.mode=privileged -jar 
 :\Code\WidgetReleases\1.0_Beta_2\widget-windows64\install.jar
Run Code Online (Sandbox Code Playgroud)

所以跟进问题是:

  1. 为什么简单地将文件类型与编辑器关联会打破这个javascript的东西,我可以想象这个或类似的问题可能会影响很多用户.
  2. 为什么从我的64位包装器运行会导致installer.js运行Abort Exit

java windows installer izpack winrun4j

59
推荐指数
1
解决办法
2165
查看次数

在Windows 7上启动Java应用程序的最佳方法是什么?

要求

我想在Windows 7上发布Java GUI应用程序.此应用程序使用Swing Toolkit,不需要任何本机代码.使用NSIS安装程序安装该应用程序.我想尽可能地将此应用程序集成到Windows 7中.这意味着:

  • 当应用程序运行时,必须可以将应用程序固定到任务栏.
  • 必须可以将数据文件与应用程序相关联,以便Windows使用我的应用程序打开这些文件.
  • 必须自动使用32位Java运行时和64位Java运行时.因此,当用户卸载32位Java并安装64位Java时(反之亦然),那么我的应用程序仍然可以工作.
  • 必须支持Windows的大字体设置.我真的不明白这个功能.我只知道有些应用程序完全忽略它,其他应用程序(如谷歌浏览器)是像素缩放的(看起来真的很难看)而其他人只是按照预期使用更大的字体来支持它(这就是我想要的,通常它的工作原理.只有WinRun4J解决方案下面提到的不起作用).

测试解决方案

WinRun4J

WinRun4j是一个启动Java应用程序的EXE文件.因为应用程序没有分叉新的Java进程,Windows认为EXE文件是应用程序.所以任务栏没有问题.文件关联有效,因为文件可以简单地与EXE文件关联.

问题:

  • 不支持大字体.应用程序窗口是像素缩放的(与谷歌浏览器一样).
  • 必须使用两个不同的EXE文件,具体取决于安装的JRE.因此,当安装64位JRE时,必须使用64位EXE文件启动应用程序.当安装32位JRE时,必须使用另一个EXE.这不是用户友好的,因为当仅安装32位JRE时,用户不理解为什么他必须在64位操作系统上使用32位EXE.

Launch4J

Launch4J创建了一个32位EXE,它启动了一个外部Java进程来启动Java应用程序.因此,与WinRun4J不同,它也可以启动64位Java.

问题:

  • 无法将应用程序固定到任务栏.
  • System.out.printlnheaderType="gui"无论是否从控制台启动应用程序,都不会打印到控制台.

在Windows上,您只需双击JAR文件即可启动该应用程序.安装JRE并不重要,只是工作.但...

问题:

  • 应用程序无法固定到任务栏.
  • 无法在开始菜单中创建快捷方式.
  • 无法将文件与JAR文件关联.

BAT/CMD

像这样的简单批处理文件可用于启动应用程序:

@echo off
start c:\windows\system32\javaw.exe -jar "c:\program files\myapp\myapp.jar" %1
Run Code Online (Sandbox Code Playgroud)

可以为此批处理文件创建快捷方式以设置自定义图标.

问题:

  • 启动应用程序时会弹出DOS窗口.
  • 批处理文件不知道javaw.exe的位置.根据安装的Java版本(32位或64位),它可能位于其中c:\windows\syswow64,Windows不会自动从批处理文件重定向此调用.使用JAVA_HOME环境变量也是不可取的,因为Java不会自动设置它.
  • 将文件与批处理文件关联时,不能设置自定义图标.
  • 任务栏支持无法正常工作.当手动启动批处理文件时,可以将应用程序固定到它,但是当双击相关文件时它不起作用.

捷径

可以仅创建启动应用程序的快捷方式,而不是使用批处理文件.它链接到这个命令:c:\windows\system32\javaw.exe -jar "c:\program files\myapp\myapp.jar".如果安装了32位Java JRE,Windows会自动将此调用重定向到SysWOW64目录.

问题:

  • 无法将文件与其关联,因为Windows仅接受EXE/COM/PIF/BAT/CMD文件作为关联目标.LNK文件不起作用.

还有另一种解决方案可以满足上述所有要求吗?或者有没有任何技巧来解决上述解决方案的问题?

使用Launch4j解决任务栏固定问题后,看起来是最好的解决方案.Launch4j可以很容易地集成到Maven项目中(使用这个这个插件),配置非常简单,除了任务栏固定外,一切都是开箱即用的.对于任务栏固定,Java应用程序必须按照此问题的答案中的说明设置appModelUserId .

此外,Java应用程序必须由安装程序安装,安装程序必须至少安装一个指向EXE的快捷方式.此快捷方式还必须包含appModelUserId.使用NSIS,可以使用WinShell插件 …

java windows batch-file launch4j winrun4j

36
推荐指数
2
解决办法
2万
查看次数

简单灵活的方法来运行java作为Windows服务

我读了SO q&a关于启动java作为windows服务包装器,但无法找到/选择产品,适合我的要求:

  1. Wrapper从配置文件中读取所有Java启动参数.在注册表中必须只有命令来运行包装器本身 - exe的路径和可能的配置路径.始终授予管理员权限以更改注册表中的应用参数是不舒服的.

  2. 工作目录和应用程序的路径也必须在配置中.我想将所有包装器文件深入到程序中,因为用户并不感兴趣.

  3. 没有依赖项(.net,python等).我不想扩展我的程序的要求.

  4. 每个Windows操作系统都免费,包括win64.

  5. 简单轻巧.所有第三方罐子的程序大小为12Mbytes.我不想添加20Mbytes包装器.

  6. 如果应用程序进程终止,则自动重启

  7. 最好是所有Windows平台的单个exe文件.

我试着通过不同的包装看起来有点累了.最合适的是:

  1. jslwin(http://jslwin.sourceforge.net),但我不知道它有多成熟(版本0.99).配置中的参数列表也有点复杂(需要编辑参数数量).
  2. winrun4j(http://winrun4j.sourceforge.net),但我不知道它有多成熟(版本0.45).它还需要一个特殊的类作为服务.

我也试着或者看看:

  1. YAJWS(http://yajsw.sourceforge.net/)太大(30mb),无法使其与自定义文件布局一起工作.
  2. 高级安装程序(http://www.advancedinstaller.com)太大(50mb).
  3. nssm(http://nssm.cc/)将启动参数存储在注册表中(无配置)
  4. winsw(https://kenai.com/projects/winsw).net必需,在进程终止后停止
  5. commons-daemon,procrun(http://commons.apache.org/proper/commons-daemon/index.html)存储启动参数在注册表中(无配置),无法理解这个产品,我觉得它很复杂.
  6. jsmooth(http://jsmooth.sourceforge.net)复杂而旧(2007年最后更新)
  7. javaservice(http://forge.ow2.org/projects/javaservice/)old(2006年最新更新)
  8. runasservice(http://runasservice.sourceforge.net/)需要.net
  9. windows rktools - sc,instsrv,srvany(http://support.microsoft.com/?scid=kb%3Ben-us%3B137890&x=16&y=7) - 在注册表中存储启动参数(无配置)
  10. jwrapper(http://www.jwrapper.com/)似乎不是我需要的.它使用JRE在exe文件中打包java程序.这不是关于Windows服务.
  11. firedaemon(http://www.firedaemon.com/)不是免费的.也许这不是我需要的.
  12. launch4j(http://launch4j.sourceforge.net/)酷能力"搜索或下载java".也许我添加这样的东西来简化安装,但它仍然不是关于subj.
  13. Java服务包装器(http://wrapper.tanukisoftware.com/)对win64不是免费的.

请告诉我哪些包装适合我的需求?或者我认为上面的包装有问题,其中一些适合我的需要?

java windows windows-services winrun4j yajsw

8
推荐指数
1
解决办法
2117
查看次数

无法在winrun4j ini文件中识别vmargs

我刚刚将我的应用程序从Java8移到了Java10,这是我现在需要添加的一部分

--add-modules java.xml.bind

避免 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

例外.

这在我的批处理文件中工作正常

JVM64\bin\java --add-modules java.xml.bind -cp lib;lang  -Xms150m -Xmx400m  -jar lib/SongKong-5.7.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
Run Code Online (Sandbox Code Playgroud)

但我不能让我的等效winrun4j .ini文件工作

我试过添加

vmarg.1=--add-modules java.xml.bind
Run Code Online (Sandbox Code Playgroud)

然后试了一下

vmarg.1=--add-modules
vmarg.2=java.xml.bind
Run Code Online (Sandbox Code Playgroud)

但是没有任何效果,从winrun4j运行时我仍然得到NoClassDefFoundError

java winrun4j

8
推荐指数
1
解决办法
108
查看次数

如何防止在winrun4j中显示控制台窗口

我在java中创建了一个桌面gui应用程序,并使用WinRun4J创建一个本机Windows启动器.

我的ini文件看起来像这样

working.directory=.
classpath.1=oze.jar
main.class=pl.emag.oze.Run
vm.version.min=1.6
vm.location=.\jre6\bin\client\jvm.dll
log.level=none
java.not.found=Nie znaleziono platformy JAVA
Run Code Online (Sandbox Code Playgroud)

我关闭了控制台日志记录(log.level = none),但它仍然显示其他控制台窗口(屏幕截图标记为红色,后台我的应用程序窗口).怎么预防呢?

在此输入图像描述

java launcher winrun4j

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

WinRun4J服务示例未运行

有谁知道如何运行WinRun4J服务示例(随软件分发的ServiceTest类)?我在64位Windows 7机器上,并安装了Java 7 JDK和JRE。

我执行了以下操作:

  1. 复制WinRun4J64c.exeC:\test,将其重命名service64.exe
  2. 复制service.ini到C:\ test,将其重命名service64.ini
  3. 最后,我复制WinRun4JTest.jarC:\test

首先,您必须以管理员身份运行命令提示符,否则无法注册服务。因此,在以管理员身份打开的命令提示符中,我输入了命令:

C:\Test>service64.exe --WinRun4J:RegisterService
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。但是,当我进入Windows服务面板以启动服务时,出现错误:

“错误1053:服务未及时响应...”

有任何想法吗?

谢谢

java service winrun4j

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