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