Webstart: Start ohne Download + vorausgehende Konfiguration?

Hallo zusammen,

im Rahmen einer Umstellung von Applet zu Webstart bin ich auf ein Problem gestoßen:

Safari (unter OSX getestet), Chrome (Win7) und Firefox (Win7) wollen beim Klick auf einen JNLP-Link die JNLP-File erstmal runterladen.

Safari macht das Neuerdings wohl stillschweigend. Man sieht nicht direkt dass da die JNLP File runtergeladen wird. Der Benutzer muss das “wissen” und die JNLP File im Download-Bereich finden und doppelt klicken um Webstart zu starten.

Chrome lädt die File einfach runter. Hier sieht man wenigstens dass etwas heruntergeladen wurde. Aber auch hier kein automatischer Start der Webstartanwendung.

Firefox zeigt ein Fenster an und bietet immerhin an die File mit Java Webstart zu öffnen.

Der IE blendet ganz kurz eine Download-Bar ein, startet dann aber von alleine die Webstart-Anwendung.

Gibt es irgendwelche Tricks (Javascript, …???) wie ich die einzelnen Browser und Betriebssysteme dazu bringen kann Webstart mit dem einen, initialen Klick auszuführen?

Auf Kundensystemen ist es ein NoGo erst noch den Browser für Webstart “konfigurieren” zu müssen dass das “mit einem klick” läuft. Es reicht wenn die Admins Java installieren müssen.

Any ideas?

Gruß
Alex

Ich habe von Webstart leider keine Ahnung, aber mal ins blaue geraten:
Wie genau bietest du die Datei an? Mit dem “Content-Disposition”-Header kann man dem Browser sagen ob er eine Datei herunterladen oder öffnen soll. Wäre ich in PHP würde ich sowas wie


header("Content-Disposition: inline");

versuchen.

Der Code sieht so aus:



<html>
<head>
<title>Standalone - Installation und Start</title>

<SCRIPT LANGUAGE="JavaScript"> 
var javawsInstalled = 0; 
var javaws12Installed = 0; 
var javaws142Installed=0; 
isIE = "false"; 
if (navigator.mimeTypes && navigator.mimeTypes.length) {    
   x = navigator.mimeTypes['application/x-java-jnlp-file'];    
   if (x) { 
      javawsInstalled = 1; 
      javaws12Installed=1;       
      javaws142Installed=1;    
   } 
} 
else {    
   isIE = "true"; 
} 
</SCRIPT> 

<SCRIPT LANGUAGE="VBScript">
on error resume next
If isIE = "true" Then
  If Not(IsObject(CreateObject("JavaWebStart.isInstalled"))) Then
     javawsInstalled = 0
  Else
     javawsInstalled = 1
  End If
  If Not(IsObject(CreateObject("JavaWebStart.isInstalled.2"))) Then
     javaws12Installed = 0
  Else
     javaws12Installed = 1
  End If
  If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.4.2.0"))) Then
     javaws142Installed = 0
  Else
     javaws142Installed = 1
  End If  
End If
</SCRIPT>


</head>


........

<a href="servlet/mywebstart.jnlp">
                <img src="pics/login5.gif" alt="hier klicken zum Starten" width="133" height="33" border="0">
</a>

.......


Werde mal schauen dass ich mich zu “Content-Disposition: inline” etwas einlese…

Weitere Ideen sind willkommen.

Moin,

ist der MIME Type auch auf dem Server gesetzt? (application/x-java-jnlp-file)

Gruß
Fancy

@TO
Statt dieses Custom-Scripts solltest du lieber das von Sun/Oracle bereitgestellte Script nutzen, findest du auch in der Doc.
@Fancy
Davon ausgehend das der IE genau das macht was er soll, nämlich das JNLP in TEMP laden und mit javaws.exe ausführen, zeigt das der Webserver scheinbar den richtigen Header liefert, sonst würde auch der IE nur einen Download draus machen da vom Server default-mäßig entweder text/plain oder application/octet-stream kommen sollte.