Tron 10 Geschrieben 19. April 2009 Melden Teilen Geschrieben 19. April 2009 Hallo zusammen, ich bau gerade ein Installationsskript über eine HTA Seite. Auf dieser HTA Seite hab ich mehrere Button für die Installation. Nach der Installation der jeweiligen Software soll der Button sofort deaktiviert (ausgegraut) werden. Die Installation einer Software funktioniert einwandfrei nur leider wird der Button nach der Installation nicht deaktiviert (ausgegraut). Um den Button zu deaktivieren nach der Installation, benutze ich eine WMI-Abfrage. Diese WMI-Abfrage funktioniert einwandfrei. Klick ich jetzt nochmals auf den Button des Installationsskripts, wird dieser auch deaktiviert (ausgegraut). Wieso deaktiviert sich der Button nicht beim ersten Klick? Hier mein Code-Beispiel: <html> <head> <title>Installation</title> <HTA:APPLICATION APPLICATIONNAME="Installation" ID="Installation" VERSION="1.0"/> </head> <script language="VBScript"> Sub Window_OnLoad Dim width,height width=500 height=500 self.ResizeTo width,height 'This method will be called when the application loads 'Add your code here End Sub Function checkwmioffice2003() On Error Goto 0 Const wbemFlagReturnImmediately = &h10 Const wbemFlagForwardOnly = &h20 Set sh = createobject("wscript.shell") Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Product where Name = 'Office2003'", "WQL") If colItems.count > 0 Then If InstallOffice2003.disabled="true" Then InstallOffice2003.disabled="false" Else InstallOffice2003.disabled="true" End If End If On Error Resume Next Set sh = Nothing End Function Function OnClickButtonInstallOffice2003() return=checkwmioffice2003 set sh = createobject("wscript.shell") sh.run "C:\Installationsskript" set sh = nothing End Function </script> <body bgcolor="white"> <!--Add your controls here--> <input type="button" name="InstallOffice2003" id="InstallOffice2003" value="Install Office2003" style="position: absolute; top: 150px; width: 180px; height: 40px; left: 30px" onclick="OnClickButtonInstallOffice2003"> <!--{{InsertControlsHere}}-Do not remove this line--> </body> </html> Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 19. April 2009 Melden Teilen Geschrieben 19. April 2009 Moin, vielleicht hängt es damit zusammen, dass du die Statusänderung des Buttons in deiner WMI-Funktion vornimmst. Bau es doch mal testhalber so um, dass die Funktion den Status des Office zurückgibt - das tut sie nämlich nicht. Derzeit ist also auch der Funktionsaufruf unsinnig, bei dem du einen Returnwert zuweist, weil ja gar keiner kommt. Dann baust du die aufrufende Funktion so um, dass der Button dort verändert wird und nicht in der WMI-Funktion. Also, kürzer gesagt: Verlagere mal das Ändern des Buttons von der WMI-Funktion in die Button-Funktion. Selbst wenn das keine Änderung bringt, ist das Skript damit logischer aufgebaut und somit später besser wartbar. Gruß, Nils Zitieren Link zu diesem Kommentar
Tron 10 Geschrieben 19. April 2009 Autor Melden Teilen Geschrieben 19. April 2009 Hi Nils, danke für deine Antwort. Hab gerade noch was geändert. Schau mal Nils... Jetzt funktioniert es... bin mir aber nicht sicher, ob das Skripte jetzt wirklich noch WMI prüft oder vorher den Button deaktiviert (ausgraut). Jetzt wäre natürlich noch ein Button super Klasse, der insgesamt prüft welche Software installiert ist und vorher die Button deaktiviert (ausgraut), hast du damit vielleicht schon Erfahrungen gesammelt. <html> <head> <title>Installation</title> <HTA:APPLICATION APPLICATIONNAME="Installation" ID="Installation" VERSION="1.0"/> </head> <script language="VBScript"> Sub Window_OnLoad Dim width,height width=500 height=500 self.ResizeTo width,height 'This method will be called when the application loads 'Add your code here End Sub Function checkwmioffice2003() Set sh = createobject("wscript.shell") sh.run "Installations.vbs" Const wbemFlagReturnImmediately = &h10 Const wbemFlagForwardOnly = &h20 Set sh = createobject("wscript.shell") Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Product where Name = 'Office2003'", "WQL") If colItems.count > 0 Then If InstallOffice2003.disabled="true" Then InstallOffice2003.disabled="false" Else InstallOffice2003.disabled="true" End If End If Set sh = Nothing End Function </script> <body bgcolor="white"> <!--Add your controls here--> <input type="button" name="InstallOffice2003" id="InstallOffice2003" value="Install Office2003" style="position: absolute; top: 150px; width: 180px; height: 40px; left: 30px" onclick="OnClickButtonInstallOffice2003"> <!--{{InsertControlsHere}}-Do not remove this line--> </body> </html> Gruß Tron Zitieren Link zu diesem Kommentar
Tron 10 Geschrieben 20. April 2009 Autor Melden Teilen Geschrieben 20. April 2009 Hallo zusammen, leider hab ich immer noch das gleiche Problem... der Button wird leider nur ab und zu deaktiviert (ausgegraut). :confused: Ich glaube das liegt an dem Zeitintervall... wenn die WMI-Abfrage erfolgt, ist das Programm noch nicht eingetragen um es abzufragen. Vielleicht kann mir noch einer Helfen? Gruß Tron Zitieren Link zu diesem Kommentar
Tron 10 Geschrieben 20. April 2009 Autor Melden Teilen Geschrieben 20. April 2009 Hallo zusammen, das kleine Problem hab ich gelöst mit (, 1, true). Function checkwmioffice2003() Set sh = createobject("wscript.shell") sh.run "Installations.vbs", 1, true Trotzdem Danke für Eure Antworten. :D Viele Grüße Tron Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 21. April 2009 Melden Teilen Geschrieben 21. April 2009 Mal ganz am Rande und nur rein aus Interesse gefragt: Aber warum will man denn Software per HTA installieren? Gibts da nicht beiweiten komfortablere Methoden? Zitieren Link zu diesem Kommentar
Tron 10 Geschrieben 21. April 2009 Autor Melden Teilen Geschrieben 21. April 2009 @ phoenixcp Richtig, wird nur benötigt für eine Testumgebung. Durch die HTA-Seite muss nur noch auf dem Button geklickt werden um ein Programm zu installieren. Die Silent-Installation und die Einstellungen der Programme werden automatisch vorgenommen. Dadurch wird der Aufwand für mehrere Installationen gedrückt. Viele Grüße Tron Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.