NikkaYoichi Skrevet 1. oktober 2013 Del Skrevet 1. oktober 2013 set service = GetObject ("winmgmts:") set shell = createobject("wscript.shell") installert = 0 ' Sjekker om programmene under kjører på maskinen. for each Process in Service.InstancesOf ("Win32_Process") If Process.Name = "program1.exe" OR Process.Name = "program2.exe" OR Process.Name = "program3.exe" OR Process.Name = "program4.exe" then MsgBox("Du har installert whatnot på din maskin og det er nå kommet en oppdatering. For å unngå tap av data, må du LAGRE og LUKKE, én eller flere av følgende programmer, før du trykker OK eller lukker dette vinduet." & VbCrLf & VbCrLf & "Program1" & VbCrLf & "Program2" & VbCrLf & "Program3" & VbCrLf & "Program4") errTrap = shell.run("install_oracle.bat /y", 0 , True) 'Sjekker om installasjonen gikk bra og setter flagg if (errTrap = 0) or (errTrap = 3010) Then installert = 1 MsgBox("Installasjonen av den nye klienten fullførte uten feil.") else installert = 0 End if Exit for End IF next 'Sjekker om klienten er installert if installert = 0 Then errTrap = shell.run("install_oracle.bat /y", 0 , True) End IF 'Skriver til eventlog if (errTrap = 0) Or (errTrap = 3010) Then 'WRITE EXIT CODE [0-success/3010-success&requires reboot] TO EVENTLOG shell.LogEvent vbLogSuccess, sLogHeader & "Installasjonen gikk superdupert." & VbCrLf & "Exit code: " & errTrap Else shell.LogEvent vbLogError, sLogHeader & "Installasjonen gikk åt skogen." & VbCrLf & "Exit code: " & errTrap MsgBox("Noe gikk galt under installasjon av klienten - vennligst kontakt IT-avdelingen!") End If WScript.Quit Hensikten med dette scriptet er altså å sjekke om noen av programmene som skal oppdateres er i bruk. Hvis så er, så må selvsagt brukeren lagre arbeidet og lukke disse - slik at man for det første sikrer at installasjonen går slik den skal og at brukeren ikke mister data. Problemet er altså at scriptet mitt klistrer en meldingsboks med "OK", og om brukeren da klikker OK, uten å lagre og lukke - så går ting åt skogen. Det jeg altså ønsker er å forsikre meg om at brukeren faktisk HAR stengt ned de nevnte programmene, før vedkommende trykker OK. Per nå, så har jeg ingen slik kontroll, men bare stoler på at brukeren faktisk har gjort det. Noen som har tips til en enkel måte å gjøre dette på? Lenke til kommentar
GeirGrusom Skrevet 1. oktober 2013 Del Skrevet 1. oktober 2013 Gjør testen på nytt når brukeren har trykket OK? Lenke til kommentar
NikkaYoichi Skrevet 1. oktober 2013 Forfatter Del Skrevet 1. oktober 2013 Det funker ikke dessverre, fordi man ikke kan nøste løkker med test av samme variabel. Man får felmeldingen: invalid for loop control variable. Jeg lukter nå på muligheten for å gjøre det med en do while og lage et flagg, som settes til gitte verdier, men det gjenstår å testes foreløpig. Lenke til kommentar
GeirGrusom Skrevet 1. oktober 2013 Del Skrevet 1. oktober 2013 (endret) Dim applicationsRunning = False Dim processNames = Array("program1.exe", "program2.exe, "program3.exe) Set service = GetObject ("winmgmts:") while applicationsRunning applicationsRunning = False For Each Process In Service.InstancesOf ("Win32_Process") If UBound(Filter(Process.Name.ToLower(), processNames)) > 0 Then MsgBox("Du har installert whatnot på din maskin og det er nå kommet en oppdatering. For å unngå tap av data, må du LAGRE og LUKKE, én eller flere av følgende programmer, før du trykker OK eller lukker dette vinduet." & VbCrLf & Join(processNames, VbCrLf)) Exit For End If Next Wend etc.Noe slikt kanskje? Endret 1. oktober 2013 av GeirGrusom Lenke til kommentar
NikkaYoichi Skrevet 1. oktober 2013 Forfatter Del Skrevet 1. oktober 2013 Jeg endte nå opp med følgende, og det ser ut til å gjøre jobben slik jeg hadde tenkt. Takk for engasjementet, Geir. do kjorer = 0 for each Process in Service.InstancesOf ("Win32_Process") If Process.Name = "program1" OR Process.Name = "program2" then MsgBox("Du har installert og har følgende program kjørende: " & process.name & " lagre og lukk posteringer før du trykker OK eller lukker dette vinduet.") kjorer = 1 End IF next loop until kjorer = 0 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå