Changes

Registry running state

5,312 bytes added, 13:00, 18 April 2006
m
no edit summary
This feature was introduced in WPKG 0.9.8.
 
 
----
 
The following logon.vbs logon script can be used to take advantage of this feature:
 
'==========================================================================
'
' NAME: Logon.vbs
' DESC: Logon to a given Windows network, connecting network drives
' printers and creating shortcuts.
'
' AUTHOR: Andre Ilie
' DATE : 5/10/2005
'
'==========================================================================
Option Explicit
'ON ERROR RESUME NEXT
Dim WSHShell
Dim Path
Dim IEWin
Dim sStatus
' full path of the script like dirname()
path = WScript.ScriptFullName
path = Left(path, InstrRev(path, "\"))
' registry constants (should be the same like in WPKG.js)
const WPKG_RUNNING = "HKLM\Software\WPKG\running"
' progress window constants
const MAX_LINE_LEN = 20
const MAX_LINES = 9
const IE_READY = 4
const EXITDELAY = 5000 ' wait 5 secs until closing
' *** COMMON OBJECTS ***
Set WSHShell = CreateObject("WScript.Shell")
Set IEWin = WScript.CreateObject("InternetExplorer.Application")
' set environment variables
' *** MAIN ***
' UI setup, needs to be done first to allow viewing messages
CreateIE()
' Wait For WPKG to complete work
WaitForWPKG()
CleanExit()
' **** END OF PROGRAM ****
' **** FUNCTIONS ****
'Quit the Script only if not in DEBUG mode
sub CleanExit()
on error resume next
LogMsg("Logon done. Have fun.")
Wscript.sleep EXITDELAY ' delay till the user is happy
IEWin.quit ' quit Internet Explorer Window
wscript.quit ' not needed for IE-Quit event
End sub
' clear an error
Sub ErrorClear()
if Err <> 0 then
'wscript.echo "ERROR: " & Err.Description
Err.Clear
End If
End SUB
' clear LogMsg buffer
SUB ClearLogMsg()
on error resume next ' don't complain if eventlog is full
sStatus = ""
IEWin.Document.All.status_msg.innerText = sStatus
ErrorClear()
End Sub
' just adds the message without CRLF
SUB AddLogMsg(msg)
on error resume next ' don't complain if eventlog is full
sStatus = sStatus & msg
IEWin.Document.All.status_msg.innerText = sStatus
ErrorClear()
End Sub
SUB LogMsg (msg)
on error resume next ' don't complain if eventlog is full
sStatus = sStatus & vbCRLF & msg
IEWin.Document.All.status_msg.innerText = sStatus
ErrorClear()
End SUB
' wait for Windows Packager to complete the work
Sub WaitForWPKG()
dim regval
dim loopcount
dim progresscount
' check for key existence to avoid error
LogMsg "Updating your system "
if RegKeyExists(WPKG_RUNNING) then
do
regval = WSHShell.RegRead(WPKG_RUNNING)
if regval = "true" then
' clear window if full
if progresscount = MAX_LINE_LEN * MAX_LINES then
ClearLogMsg()
progresscount = 0
else
progresscount = progresscount + 1
End If
' don't forget the space or it will be not wrapped
' when shown in IE.Window
AddLogMsg ". "
' needs to be 1s as we are counting time here also
Wscript.sleep 1000
End If
Loop until regval = "false"
' flush the screen
ClearLogMsg()
End If
End Sub
Function RegKeyExists(keyname)
on error resume next
dim ret
dim regval
regval = WSHShell.RegRead(keyname)
' use error object to see if RegKey is there or not
if Err <> 0 then
ret = false
else
ret = true
end if
Err.Clear
RegKeyExists = ret
End Function
' PRETTY OUTPUT FUNCTIONS
SUB CreateIE()
' MS IE windows is invisible, we need only the dialog
'IEWin.navigate "about:blank" ' empty document
' Important: Wait till MSIE is ready
On Error Resume Next
' without this error will occure randomly
With IEWin
.navigate path + "logon.html"
Do until .ReadyState = IE_READY
Wscript.sleep 200
Loop
.height=230
.width=300
.resizable=0 ' no resize button
.Document.Body.Scroll = "no" ' no scroll bars
.menubar=0
.toolbar=0
.statusBar=0
.AddressBar=0
' delay until we are ready to talk to IE
Do While (.Busy)
Wscript.Sleep 200
Loop
.left=(.document.ParentWindow.screen.availWidth - .width) /2
.top=(.document.ParentWindow.screen.availHeight - .height) /2
.visible=1
Do While (.Busy)
Wscript.Sleep 200
Loop
End With
End SUB
 
This logon script uses logon.html file to show users a window with a short description:
 
 
<nowiki><html></nowiki>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Network Logon</title>
</head>
<body bgcolor="white" bgproperties="fixed" marginwidth=0 leftmargin=5>
<nowiki><font face="Verdana, Arial, Helvetica"></nowiki>
<nowiki><p</nowiki> align="left" id="status_msg"><nowiki><strong></nowiki>Please wait...<nowiki></strong></nowiki><nowiki></p></nowiki>
<nowiki></font></nowiki>
</body>
<nowiki></html></nowiki>
[[category:Documentation]]