Forefront UAG Client Components: suppress reboot during uininstall
Hi, I need to deploy MS Forefront UAG Client Components 4.0.0. The problem is that the uninstall reboots the PC without warning or delay possibility.
The original source is an MSI, however the only thing the MSI does is extracting the actual source files to a temporary folder and then it launches a setup.exe file which handles the installation itself. Using msiexec /x on the MSI file doesn't work. But I found that passing /q UNINSTALL=1 to the MSI launches the uninstall procedure. It actually calls this command: "rundll32.exe C:\WINDOWS\DOWNLO~1\WhlMgr.dll,UnInstall 3.1.0 63 0 0 4.0.0". The zero (0) before "4.0.0" means silent, but it reboots PC without warning. When I put it to 1 (not silent), I get a message box with a reboot prompt (yes/no). So there is a way to delay reboot, but I can't find how to trigger it in silent mode. Capturing everything is tricky, it messes up Windows logon...
I can't find anything on the internet, even on Microsoft websites. I already tried parameters as /? etc. on EXE files, but that doesn't work either...
Does someone have experience with this?
Any help is welcome!
Thanks in advance,
Koen
The original source is an MSI, however the only thing the MSI does is extracting the actual source files to a temporary folder and then it launches a setup.exe file which handles the installation itself. Using msiexec /x on the MSI file doesn't work. But I found that passing /q UNINSTALL=1 to the MSI launches the uninstall procedure. It actually calls this command: "rundll32.exe C:\WINDOWS\DOWNLO~1\WhlMgr.dll,UnInstall 3.1.0 63 0 0 4.0.0". The zero (0) before "4.0.0" means silent, but it reboots PC without warning. When I put it to 1 (not silent), I get a message box with a reboot prompt (yes/no). So there is a way to delay reboot, but I can't find how to trigger it in silent mode. Capturing everything is tricky, it messes up Windows logon...
I can't find anything on the internet, even on Microsoft websites. I already tried parameters as /? etc. on EXE files, but that doesn't work either...
Does someone have experience with this?
Any help is welcome!
Thanks in advance,
Koen
1 Comment
[ + ] Show comment
Answers (11)
Please log in to answer
Posted by:
MsiCreator
14 years ago
Posted by:
koswo
14 years ago
Posted by:
anonymous_9363
14 years ago
Open up the EXE in a decent text or hex editor (which discounts NotePad and WordPad, obviously!) and see if you can find any obvious text.
Myself, I'd be capturing the extracted set-up as an MSI. I find it most unusual that a Microsoft product embeds an installer EXE in an MSI. I can't recall a single MS product which does that... :(
Myself, I'd be capturing the extracted set-up as an MSI. I find it most unusual that a Microsoft product embeds an installer EXE in an MSI. I can't recall a single MS product which does that... :(
Posted by:
koswo
14 years ago
Posted by:
eskonar
14 years ago
Posted by:
RahulRaman
14 years ago
Posted by:
nortonl
13 years ago
I encountered this problem recently and got round the problem using AutoIt. This is a script language which amongst other things can send keystrokes to specific windows so I configured it to press the 'No' reboot button then 'Close' the other window.
Compile the following AutoIt code into an EXE:
AutoItSetOption("WinTitleMatchMode", 3)
WinWait("Forefront UAG client components","",1800)
SendKeepActive ("Forefront UAG client components")
Send("{RIGHT}")
Send("{SPACE}")
WinWait("Uninstalling Forefront UAG client components","",60)
SendKeepActive ("Uninstalling Forefront UAG client components")
Send("C")
Create some sort of script which runs the AutoIt exe then your normal uninstall command line for Forefront UAG (without changing the value to suppress user interaction).
The AutoIt EXE runs in the background and waits until the Forefront uninstaller gets to the bit where the user is prompted to reboot then sends the required keystrokes. A bit of a fudge, I couldn't think of anything better.
Compile the following AutoIt code into an EXE:
AutoItSetOption("WinTitleMatchMode", 3)
WinWait("Forefront UAG client components","",1800)
SendKeepActive ("Forefront UAG client components")
Send("{RIGHT}")
Send("{SPACE}")
WinWait("Uninstalling Forefront UAG client components","",60)
SendKeepActive ("Uninstalling Forefront UAG client components")
Send("C")
Create some sort of script which runs the AutoIt exe then your normal uninstall command line for Forefront UAG (without changing the value to suppress user interaction).
The AutoIt EXE runs in the background and waits until the Forefront uninstaller gets to the bit where the user is prompted to reboot then sends the required keystrokes. A bit of a fudge, I couldn't think of anything better.
Comments:
-
The "WhlClientSetup-Basic.msi" has the following uninstall string
"rundll32.exe C:\Windows\DOWNLO~1\WhlMgr.dll,UnInstall 3.1.0 63 0 1 4.0.0"
the digits shows Hint number of function in the WhlMgr.dll.
for silent uninstall disable the FinishInstall() and DllgetClassObject() Functions ,
Thus the new Uninstall string is like:
"rundll32.exe C:\Windows\DOWNLO~1\WhlMgr.dll,UnInstall 3.1.0 63 0 0 0.0.0"
add it to custom action,shedule it after install finalise in execute imidiate(if doing from MSI),else use it as it is manually - See more at: http://www.itninja.com/question/forefront-uag-client-components-suppress-reboot-during-uininstall#sthash.fOpRP4J3.dpuf - Heet 10 years ago
Posted by:
nortonl
13 years ago
We raised a Premier Support call about this and Microsoft offered a hotfix which allows command line control over reboot behaviour. It has not been fully tested and is only available privately if you raise a Premier Support call (I can't provide a copy). I was told this functionality will be rolled into a future release.
Posted by:
nagaraju118
13 years ago
Posted by:
Heet
11 years ago
The source "WhlClientSetup-Basic.msi" has the following uninstall string
"rundll32.exe C:\Windows\DOWNLO~1\WhlMgr.dll,UnInstall 3.1.0 63 0 1 4.0.0"
the underlined digits shows Hint number of function in the WhlMgr.dll.
for silent uninstall disable the FinishInstall and DllgetClassObject Functions ,
Thus the new Uninstall string will be
"rundll32.exe C:\Windows\DOWNLO~1\WhlMgr.dll,UnInstall 3.1.0 63 0 0 0.0.0"
add it to custom action,shedule it after install finalise in execute imidiate
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.
"rundll32.exe C:\Windows\DOWNLO~1\WhlMgr.dll,UnInstall 3.1.0 63 0 1 4.0.0"
the digits shows Hint number of function in the WhlMgr.dll.
for silent uninstall disable the FinishInstall() and DllgetClassObject() Functions ,
Thus the new Uninstall string is like:
"rundll32.exe C:\Windows\DOWNLO~1\WhlMgr.dll,UnInstall 3.1.0 63 0 0 0.0.0"
add it to custom action,shedule it after install finalise in execute imidiate(if doing from MSI),else use it as it is manually
- See more at: http://www.itninja.com/question/forefront-uag-client-components-suppress-reboot-during-uininstall#sthash.fOpRP4J3.dpuf - Heet 10 years ago