2
我们在自动化Maven构建过程中遇到了一些麻烦。这个构建会不时被install4j的签名过程破坏。有时候它会很好运作,有时我们会得到以下例外:签名过程中的SocketTimeoutException
...
[15:51:29] : [myapp] [INFO] Compiling launcher 'Standalone updater':
[15:51:29] : [myapp] [INFO] replaced variable 'launcher.name' with 'MyApp' in string '${compiler:launcher.name} Update'
[15:51:29] : [myapp] [INFO] using icon file D:\BuildAgent7\work\1c0ed506bc73bcb4\target\install4j\resource\updater.ico
[15:51:29] : [myapp] [INFO] replaced variable 'sys.fullName' with 'My Application' in string 'Starts the ${compiler:sys.fullName} update'
[15:51:29] : [myapp] [INFO] Creating GUI mode application.
[15:51:29] : [myapp] [INFO] Signing executable
[15:51:37] : [myapp] [INFO] Creating media file:
[15:51:37] : [myapp] [INFO] replaced variable 'launcher.name' with 'MyApp' in string '${compiler:launcher.name} Uninstall'
[15:51:37] : [myapp] [INFO] output file is D:\BuildAgent7\temp\buildTmp\install4j374202026546155444_dir\set1\launcheruninstaller\app.ico
[15:51:37] : [myapp] [INFO] replaced variable 'sys.fullName' with 'My Application' in string 'Remove the ${compiler:sys.fullName} installation'
[15:51:37] : [myapp] [INFO] Creating GUI mode application.
[15:51:37] : [myapp] [INFO] Signing executable
[15:51:47] : [myapp] [INFO] com.a.a.d: error during counter signing
[15:51:47] : [myapp] [INFO] at com.install4j.c.b.d.a(ejt:137)
[15:51:47] : [myapp] [INFO] at com.install4j.c.b.d.a(ejt:94)
[15:51:47] : [myapp] [INFO] at com.install4j.c.b.g.a(ejt:68)
[15:51:47] : [myapp] [INFO] at com.install4j.b.g.c.a(ejt:189)
[15:51:47] : [myapp] [INFO] at com.install4j.b.g.c.a(ejt:82)
[15:51:47] : [myapp] [INFO] at com.install4j.b.g.g.a(ejt:60)
[15:51:47] : [myapp] [INFO] at com.install4j.b.b.d(ejt:392)
[15:51:47] : [myapp] [INFO] at com.install4j.b.b.c(ejt:360)
[15:51:47] : [myapp] [INFO] at com.install4j.b.b.a(ejt:135)
[15:51:47] : [myapp] [INFO] at com.install4j.b.h.a(ejt:440)
[15:51:47] : [myapp] [INFO] at com.install4j.b.h.a(ejt:214)
[15:51:47] : [myapp] [INFO] at com.install4j.b.h.d(ejt:106)
[15:51:47] : [myapp] [INFO] at com.install4j.Install4JApplication.c(ejt:436)
[15:51:47] : [myapp] [INFO] at com.a.a.a(ejt:286)
[15:51:47] : [myapp] [INFO] at com.install4j.Install4JApplication.main(ejt:93)
[15:51:47] : [myapp] [INFO] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[15:51:47] : [myapp] [INFO] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[15:51:47] : [myapp] [INFO] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[15:51:47] : [myapp] [INFO] at java.lang.reflect.Method.invoke(Unknown Source)
[15:51:47] : [myapp] [INFO] at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
[15:51:47] : [myapp] [INFO] at com.exe4j.runtime.WinLauncher.main(Unknown Source)
[15:51:47] : [myapp] [INFO] at com.install4j.runtime.launcher.WinLauncher.main(Unknown Source)
[15:51:47] : [myapp] [INFO] Caused by: java.io.IOException: Read timed out
[15:51:47] : [myapp] [INFO] You can set a different timestamp signing service by setting the VM parameter -Dinstall4j.timestampUrl=http://... in bin/install4j.vmoptions
[15:51:47] : [myapp] [INFO] at com.install4j.c.b.d.b(ejt:174)
[15:51:47] : [myapp] [INFO] at com.install4j.c.b.d.a(ejt:110)
[15:51:47] : [myapp] [INFO] ... 21 more
[15:51:47] : [myapp] [INFO] Caused by: java.net.SocketTimeoutException: Read timed out
[15:51:47] : [myapp] [INFO] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[15:51:47] : [myapp] [INFO] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
[15:51:47] : [myapp] [INFO] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
[15:51:47] : [myapp] [INFO] at java.lang.reflect.Constructor.newInstance(Unknown Source)
[15:51:47] : [myapp] [INFO] at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
[15:51:47] : [myapp] [INFO] at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
[15:51:47] : [myapp] [INFO] at java.security.AccessController.doPrivileged(Native Method)
[15:51:47] : [myapp] [INFO] at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
[15:51:47] : [myapp] [INFO] at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
[15:51:47] : [myapp] [INFO] at com.install4j.runtime.installer.helper.content.Downloader.connect(Unknown Source)
[15:51:47] : [myapp] [INFO] at com.install4j.c.b.d.b(ejt:156)
[15:51:47] : [myapp] [INFO] ... 22 more
[15:51:47] : [myapp] [INFO] Caused by: java.net.SocketTimeoutException: Read timed out
[15:51:47] : [myapp] [INFO] at java.net.SocketInputStream.socketRead0(Native Method)
[15:51:47] : [myapp] [INFO] at java.net.SocketInputStream.read(Unknown Source)
[15:51:47] : [myapp] [INFO] at java.net.SocketInputStream.read(Unknown Source)
[15:51:47] : [myapp] [INFO] at java.io.BufferedInputStream.fill(Unknown Source)
[15:51:47] : [myapp] [INFO] at java.io.BufferedInputStream.read1(Unknown Source)
[15:51:47] : [myapp] [INFO] at java.io.BufferedInputStream.read(Unknown Source)
[15:51:47] : [myapp] [INFO] at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
[15:51:47] : [myapp] [INFO] at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
[15:51:47] : [myapp] [INFO] at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
[15:51:47] : [myapp] [INFO] at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(Unknown Source)
[15:51:47] : [myapp] [INFO] at java.net.URLConnection.getHeaderFieldLong(Unknown Source)
[15:51:47] : [myapp] [INFO] at java.net.URLConnection.getContentLengthLong(Unknown Source)
[15:51:47] : [myapp] [INFO] at java.net.URLConnection.getContentLength(Unknown Source)
[15:51:47] : [myapp] [INFO] ... 24 more
[15:51:47] : [myapp] [INFO] install4j: compilation failed. Reason: error during counter signing
[15:51:47] : [myapp] [Maven Watcher]
[15:51:47]E: [myapp] Failed to execute goal org.sonatype.install4j:install4j-maven-plugin:1.0.5:compile (build-installer) on project myapp: null returned: 1
...
这是稳定我们连续构建的问题。 SocketTimeoutException
使我得出了与verisign服务器缺少连接的结论。但是对于更新程序,在签署执行期间已经有一个连接。现在我不确定这是否可能是我们的构建环境或install4j本身的签名过程的问题。什么值被设置为连接超时的默认值?是否可以重写此值?
对于签署,我们使用pfx -file和install4j与版本5.1.12。
好的,我会试试这个。是否也可以在命令行设置VM参数,而不是固定到vmoption-file? – Hardie82 2014-09-05 11:59:10
是的,使用-J-Dinstall4j.readTimeout = 20000 – 2014-09-05 13:06:35
install4j maven插件现在已得到增强,以显示允许您设置此参数和其他VM参数的参数。拉请求是https://github.com/sonatype/install4j-support,它包含更多的文档。具有这些更改的新发行版本是1.0.8。 – 2015-02-13 17:07:38