Thanks for all that help, and for providing all the code. I followed all your instructions and now it works great!

However, just for fun and my own education I went back to my original code and made a couple of edits just to see for myself how far off I really was. Below is what I came up with. And it works as it should, the uninstaller runs successfully and closes itself at the end. (I even got my code tags in there this time Glenn \:\) )

 Code:
;*************************************************************************
;  Script Name:   Limewire 5.1.2 Removal
;  Author:        Erik Dunbar
;  Date:          3/23/2009
;  Description:   Script to silently automate the uninstall wizard of Limewire. Should prevent user interaction.
;*************************************************************************
 
DIM $Rc

;Script Options
$SO=SETOPTION("Explicit", "ON")
$SO=SETOPTION("NoMacrosInStrings", "ON")
$SO=SETOPTION("NoVarsInStrings", "ON")
BREAK ON

Shell "%PROGRAMFILES%\Limewire\uninstall.exe"
Do Sleep 1 Until SetFocus("LimeWire 5.1.2 Uninstall") = 0
$Rc=SendKeys(N)
$Rc=SendKeys(U)
Sleep 2
$Rc=SendKeys(F)


Although I think I understand why the additional coding and formatting are necessary. It's for clarity and error checking right?

One of the ones I don't fully get is the Dim $Cmd part. Is it bad to just run the SHELL command as I did in my inital coding?

The $TimeToDie command is really cool, I just tested that. That will come in really handy as I test the broader implementation.

I also noticed you inserted spaces around the '=' in the code, again just a clarity thing?

Lastly, below is the final code I was planning on using. I hope it meets with approval! Any comments please let me know, this has been a lot of fun so far.

 Code:
;*************************************************************************
;  Script Name:   Limewire 5.1.2 Removal
;  Author:        Erik Dunbar
;  Date:          3/23/2009
;  Description:   Script to silently automate the uninstall wizard of Limewire. Should prevent user interaction.
;*************************************************************************
 
BREAK ON

; Declare variables first
Dim $Rc                   ; Used to trap return codes
Dim $Cmd                  ; command string used for SHELL
$TimeToDie = @TICKS + 60000 ; 60 seconds from now

; set Script Options to enforce good habits
$Rc = SetOption("Explicit", "ON")
$Rc = SetOption("NoMacrosInStrings", "ON")
$Rc = SetOption("NoVarsInStrings", "ON")

; launch the uninstaller
$Cmd = '%PROGRAMFILES%\Limewire\uninstall.exe'
'Running ' $Cmd ?
Shell $Cmd

While @TICKS < $TimeToDie And SetFocus('Limewire')
  Sleep 1
Loop
If @TICKS > $TimeToDie
  'failed to launch uninstaller!' ?
  Exit 1
EndIf

; send keystrokes to the active program
$Rc = SendKeys('N')
$Rc = SendKeys('U')
Sleep 2
$Rc = SendKeys('F')