Jump to content

Installationsskript - HTA Seite


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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>

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

@ 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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...