FWIW - I use the following excerpt for distributing IE and OE patches. All machines are running at least IE 5.5 SP2, so I don't check for anything less or greater than IE 6.0 SP1. The update process works for me on Win98 and 2000/XP machines. The OE patch doesn't get installed until the IE patch has installed. The user keeps getting bugged to do it until it's done.

; ---------------------------------------
; UPDATE CHECK FOR INTERNET EXPLORER
; ---------------------------------------

$spver = readvalue("HKEY_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Internet Settings","MinorVersion")
$iever = getfileversion("c:\program files\internet explorer\iexplore.exe","ProductVersion")

sleep 3

if instr($spver, "Q813489") = 0

? "Please wait while the Internet Explorer update starts..."
?

if instr($iever,"5.5") = 0 and instr($iever,"6.0") = 0
messagebox("You do not have IE 5.5 or 6.0, please let Robert know.", "Incorrect Version of IE", 0)
goto End
endif

messagebox("Please wait while your version of Internet Explorer is updated. Answer 'Yes' and then 'Ok' to the following prompts when they appear. Once the update has been successfully installed, your computer will need to be rebooted.", "Internet Explorer Update", 0)

if instr($iever,"5.5") and instr($spver, "SP2")

? "Launching update for IE 5.5 SP2..."
shell "\\server\netlogon\mspatch\ie55sp2_q813489.exe"
goto End
endif

if instr($iever,"6.0") and instr($spver, "SP1")

? "Launching update for IE 6.0 SP1..."
shell "\\server\netlogon\mspatch\ie60sp1_q813489.exe"
goto End

endif

if instr($iever,"6.0")

? "Launching update for IE 6.0..."
shell "\\server\netlogon\mspatch\ie60_q813489.exe"
goto End
endif

endif

; ---------------------------------------
; UPDATE CHECK FOR OUTLOOK EXPRESS
; ---------------------------------------

if instr($spver, "Q813489") and instr($spver, "Q330994") = 0

? "Please wait while the Outlook Express update starts..."
?

messagebox("Please wait while your version of Outlook Express is updated. Answer 'Yes' and then 'Ok' to the following prompts when they appear. Once the update has been successfully installed, your computer will need to be rebooted.", "Outlook Express Update", 0)

if instr($iever,"5.5") and instr($spver, "SP2")

? "Launching update for OE 5.5 SP2..."
shell "\\server\netlogon\mspatch\oe55sp2_q330994.exe"
goto End
endif

if instr($iever,"6.0") and instr($spver, "SP1")

? "Launching update for OE 6.0 SP1..."
shell "\\server\netlogon\mspatch\oe60sp1_q330994.exe"
goto End

endif

if instr($iever,"6.0")

? "Launching update for OE 6.0..."
shell "\\server\netlogon\mspatch\oe60_q330994.exe"
goto End
endif
endif

[ 20. May 2003, 20:23: Message edited by: Robert Fernatt ]