Supportnet Computer
Planet of Tech

Supportnet / Forum / Windows98

JavaScript-Problem





Frage

Hallo! Wer kann mir bei meinem Script helfen? Der Donwload des ZIP-Archives funktioniert und das Entpacken geht nicht. Das Script stoppt beim Aufruf der Funktion unzipFile("defs.zip"); ohne Fehlermeldung. Ich weiss mir keinen Rat mehr. Alle zum Scriptablauf benötigten Dateien befinden sich im selben Ordner. [code]<SCRIPT language="JavaScript"> // Die Angabe zu dem genutzen Server: var Server1Name = "www.lavasoft.com"; var RemoteDir = "/public/"; var RemoteURL = "http://download.lavasoft.com"; // Die obenstehenden Angaben können angepasst werden, falls der Updater seine // Definitionsdateien von einer anderen Adresse beziehen soll. Als "Server1Name" // geben Sie den Domainnamen an und unter "RemoteURL" steht die URL. // Der Pfad, in dem die Dateien auf dem Server liegen wird durch // RemoteDir definiert. // Ein paar Objekte, die das Script benötigt: var oFs = new ActiveXObject("Scripting.FileSystemObject"); var wshShell = new ActiveXObject("WScript.Shell"); var heute = new Date(); var filesize1=0; // Starten von Ad-Aware function runadaware() { wshShell.Run("Ad-Aware.exe"); } // resize application windows and s if Ad-Aware exists in current directory // parameters: void // returns: void function initFenster() { document.all.Sname1.innerText = Server1Name; window.resizeTo(260, 325); if (oFs.FileExists("Ad-Aware.exe") != true) { alert("Ad-Aware Programmdatei nicht gefunden. Überprüfen Sie, ob sich \"defupdate.HTA\" im gleichen Ordner wie \"Ad-Aware.exe\" befindet."); } if (oFs.FileExists("wget.exe") != true) { alert("FTP-CLient nicht gefunden. Dieses Script nutzt den Quelloffenen Client \"wget\". Überprüfen Sie, ob sich \"wget.exe\" im gleichen Ordner wie \"defupdate.HTA\" befindet."); } document.all.TDSIGNDEFDAT.innerText = Math.round((Date.parse(heute)-Date.parse(getZeitstempel("defs.ref")))/86400000); } // Signaturarchiv-Download mittels wget.exe function downloadFiles() { wshShell.Run("wget.exe -N " + RemoteURL + RemoteDir + "defs.zip",1,true); unzipFile("defs.zip"); document.all.TDSIGNDEFDAT.innerText = Math.round(Date.parse(heute)/86400000-Date.parse(getZeitstempel("defs.ref"))/86400000); } // Entpacken der ZIP-Datei mit unzip.exe // function to unzip the downloaded files, if unzip.exe exists // parameters: file path and name // returns: void function unzipFile(zipfilename) { if (oFs.FileExists("unzip.exe") == true) { if (oFs.FileExists(zipfilename) == true) { wshShell.Run("unzip -o " + zipfilename,0,true); } } else alert("Die Datei \"unzip.exe\" fehlt im Verzeichnis!"); } // function to determine the date of the last modification of a file. // parameters: file path and name // returns: date object function getZeitstempel(filename) { var f, s; if (oFs.FileExists(filename) == true) { f = oFs.GetFile(filename); s = new Date(f.DateLastModified); return(s); } } // Hilfe anzeigen function help() { Fenster = window.open("./help.htm", "Hilfefenster", "width=460, height=500, scrollbars=yes"); Fenster.focus(); } </SCRIPT> [/code]

Antwort 1 von katy

Hallo LoLo,

hast du schon mit ein paar alert in der betreffenden Funktion mal geprüft, ob die if-Abfragen überhaupt true liefern? Hast du dir auch sonst mal per alert ausgeben lassen, ob die verschiedenen Scriptteile das machen, was du vermutest?
Leider läuft ja dein Script nur auf dem IE und der hat nun mal keinerlei ernsthaft nutzbare Script-Fehlerkonsole, daher bleiben nur alerts zur Kontrolle des Scriptablaufs.

katy

Antwort 2 von LoLo

@ Katy

Das Script läuft ab dem Aufruf der Funktion unzipFile nichtmehr. Ich vermute, das es mit der unzip-Funktion zusammenhängt. Das mit der alert-Ausgabe kann ich ja mal überprüfen.
Wieso soll es nur auf dem IE laufen? Dann würde ja keine andere Inerternet-Seite funktionieren. Du musst im Browser bloß Javasript aktivieren.

Antwort 3 von katy

Hallo LoLo,

sorry, aber da muss ich dir widersprechen. JavaScript zu aktivieren reicht bei deinem Script nicht aus, auch ActiveX muss zur Verfügung stehen. Und das gibt es nur im IE. In allen anderen Browsern gibt es aus Sicherheitsgründen keinen Zugriff auf das Dateisystem, lediglich der IE bietet diese Möglichkeit über ActiveX. Und dann auch nur, wenn dies ausdrücklich erlaubt wird in den Sicherheitseinstellungen.

katy

Antwort 4 von LoLo

@ Katy

Ja stimmt, an das AktiveX habe ich jetzt garnicht gedacht.

Ich habe jetzt mal mit alert überprüft und es schein an dieser Zeile zu liegen.

if (oFs.FileExists(zipfilename) == true) {
      wshShell.Run("unzip -o " + zipfilename,0,true);
    }


Hier erscheint die alert-Ausgabe, und wenn ich bei dem dick dargestellten Ausdruck false einsetze kommt keine Ausgabe. Die ZIP-Datei befindet sich ebenfalls im gleichen Ordner wie die Script-Datei und wird anscheinend trotzdem nicht erkannt. Oder hängt es mit dem RUN-Befehl für die unzip.exe zusammen?

Antwort 5 von katy

Hallo Lolo,

mit ActiveX habe ich mich bislang kaum befasst. Ich könnte also nur raten. Gut, ich rate mal: Heißt das Programm nicht unzip.exe? Oder ist das bei wshShell.Run egal?

katy

Antwort 6 von LoLo

Die Endung EXE ist meiner Ansicht nach nicht erforderlich. Es funktionier trotzdem nicht.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: