ion * 100 + revision;
if ( thisVersion > latestVersion ) {
String value = null;
while ( i < numEntries ) {
value = results.get( i++ ).toString().trim();
if ( value.startsWith( "JavaHome" ))
break;
}
installedPath = value.substring(
value.indexOf( "REG_SZ" ) + 6 ).trim();
latestVersion = thisVersion;
}
}
}
}
}
}
return installedPath;
}
通过CD-ROM分发Java Web Start应用程序(3)
时间:2011-07-08 Sun / Luan O''Carroll
上述方法的作用是查找注册表条目。可以通过一些 API 来获 取注册表的值,但是对于这种情况,最实际的方法是使用简单的命令行 REG QUERY <key>,其中,<key> 是查询的注册表路径。下面这个方法将 运行该命令并从输出流中读取条目,然后将它作为 Vector 返回:
private Vector getRegEntries( String key )
{
Vector results = new Vector();
try {
Process proc = Runtime.getRuntime().exec( "REG QUERY " +
key );
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String result = "";
String line;
while (( line = br.readLine()) != null ) {
line = line.trim();
results.add( line );
}
return results;
}
catch ( Exception ex ) {
message( language.getString("6") + ex.getMessage() );
ex.printStackTrace();
}
return null;
}
安装 JVM
如果无法找到合适的 JVM,那么可以通过 CD 安装它,只要知道它的位置就行 。启动程序使用一个资源文件定位所需的各种资源,并通过此机制定向到 JVM 安 装包。启动 JVM 安装的方法仍然是使用正确的命令,但这次,由于进程运行的时 间相对较长,因此需要等待它运行完成。execed 进程的 waitFor 方法将使线程 等待,但是为了避免阻塞 UI 线程,需要将它嵌入在一个 SwingWorker 中:
private void installJre()
{
try {
final String javaInstall = (String)props.get(
"jre_installer" );
status.setText( language.getString("3") );
SwingWorker worker = new SwingWorker()
{
public Object construct()
{
try {
Process process = Runtime.getRuntime().exec(
wo***ngDir + File.separatorChar +
javaInstall );
process.waitFor();
exitValue = new Integer( process.exitValue());
}
catch ( Exception ex ) {
exitValue = new Integer( -1 );
ex.printStackTrace();
}
return exitValue;
}
public void finished()
{
int ev = exitValue.intValue();
if ( exitValue != 0 ) {
status.setText( language.getString("Error:_") +
exitValue );
message( language.getString("4") );
}
else {
installedJrePath = getInstalledPath( 5, -1, -1,
5, -1, -1 );
doInstall( installedJrePath );
}
status.setText( "" );
}
};
worker.start();
}
catch ( Exception ex ) {
status.setText( language.getString( "5" ));
ex.printStackTrace();
}
}
通过CD-ROM分发Java Web Start应用程序(4)
时间:2011-07-08 Sun / Luan O''Carroll
启动 JWS 和 Wait
定位到 JVM 之后,可以使用适当的命令行来启动它。在调用 JWS 时,初次调 用 import 可能需要花费一些时间,因此需要再次使用 waitFor 方法,而第二次 调用只需要启动应用程序即可(并让它执行自己的任务)。当应用程序启动之后 ,可以退出启动应用程序,它的任务已经完成:
private void launchWebStart( String javaWS
|