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
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.
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
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.
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?
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
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.

