View Full Version : IDriver.exe: hangs on NT when removing backup files?
alastair.camero
02-21-2002, 04:18 AM
Standard project, 7.02.
We are having problems with IDriver.EXE hanging at the end of an install on Windows NT4.
There seems to be issuing with cleaning up temporary files - The task monitor indicates that MSIExec is taking 50% of the machine's CPU but the "removing backup files" prompt is never removed.
This problem doesn't seem to happen on Windows 2000 or XP.
Any ideas?
Thanks.
Alastair
Joshua
02-21-2002, 10:40 AM
Alastair,
Can you reproduce this with any other projects on Windows NT 4 machines? If so, I can test this further.
If you can't reproduce with other projects, I'd recommend building a new Release with new Release name of your current project. Does the same behavior occur?
Regards,
Joshua
InstallShield
mingbiaofei
02-21-2002, 11:05 AM
In this case, MSI engine hangs for some reason. Check the log to see where it chokes.
I notice similar behavior from MSI2.0 (Not at the same place), it hangs for quite a well (a couple of minutes) before it starts to move.
Saugata Guha
12-01-2003, 03:01 PM
I have also experienced this. I am
using InstallShield 7.04, Install ran on Windows XP machine.
and hung.
The message box says
"Removing backup files"
100%
This happens after OnFirstUIBefore()
I do not enter OnFirstUIAfter().
I talked to the support but they wanted
a log. Since this was not reproducible
they do not want to consider it as a bug.
If any one knows the reason or solution
please drop a line.
Thanks
Saugata.
jeffozvold
03-23-2004, 12:42 PM
I get the same problem. I don't know exactly when it's occurring, but here is my config:
ISD 7.04
(Also happens on DevStudio 9)
Windows 2000 SP 4 w/all critical updates (build and install machines)
(Also happens on plain 2000 and 2000 SP 3)
msiexec.exe takes all the CPU time. Killing the InstallShield task yields an IDriver.exe not responding window.
This reproduces all the time. I've been in contact with Support about this for a few days.
Here are some interesting tidbits:
- this takes much longer when booting with /numproc=1. Not time-wise, but it happens much less frequently. (A cyclical install/uninstall test took 12 hours uniproc where it was failing at 7-20 minutes before on a dual proc)
- issuing a 'net stop msiserver' between each step in the install/uninstall test does not help at all -- so it's probably not a continual memory leak of msiexec.exe.
Saugata Guha
03-23-2004, 03:26 PM
What I have found until now:
1. I talked to the support folks they want you to buy the
new product. :-) But will not say that this problem was
fixed.
2. I have given them the logs, cannot do any thing.
Looks like the support folks tries to debug themselves
without talking to the developer.
3. Kill the msiexe.exe instances first,
there might be 2 or 3 instances.
In this case the setup terminates more gracefully.
4. If you kill IDriver.exe first, setup.exe terminates without
cleanup. You might have to clean up some of the registry
entries yourself, to reinstall the product again.
Thanks
Saugata.
jeffozvold
03-23-2004, 03:54 PM
Which registry entries should I clean up? Are these specific
to my program? Are they somewhere other than the
UninstallInformation key (or whatever it's called)?
This is really an unacceptable failure for us.
Although I have not tried it, others have reproduced the failure
on DevStudio 9. Also, when msiexec (from Microsoft) is exhibiting
the problem, why would upgrading fix it? :-P
Saugata Guha
03-23-2004, 05:37 PM
This is new .NET jscript program, will not work unless you
have the .NET runtime installed.
I could not figure out how to install the runtime along
with the application, or link a static library to it.
Please change the hard coded Product GUIDs and Upgrade GUIDs
for you application.
Also set the inverse GUIDs correctly.
Works for me.
Hope that helps.
Thanks
Saugata.
/**
* Clean registry keys to remove hung Product installation (un)installation.
* Kill IDriver.exe
* Kill MSIEXEC.EXE (all instances, could be more than one.)
* Will get Error: 1607 is setup.exe is restarted.
*
* *** Do not kill IDriver first, kill MSIEXEC.EXE*****
*
* Few more keys not removed yet.
* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache\{80A5D848-7E8C-43E3-9736-CCDEC9936E8E}
*
* Compile:
* c:\windows\Microsoft.NET\Framework\v1.0.3705\jsc.exe /target:exe /warn:4 /out:delProd.exe delProd.js
*
* Runtime Environment:
* Must have .NET Framework or runtime environment installed.
*
* Restrictions:
* Cannot be run from Network drive. It will encounter the following exception.
* System.Security.Policy.PolicyException: Execution permission cannot be aquired.
*
* @author Saugata Guha
*/
import System;
import Microsoft.Win32;
var regHKCR:RegistryKey = Registry.ClassesRoot;
var regHKLM:RegistryKey = Registry.LocalMachine;
/**----------------------------------------------------*/
/** Change the Upgrade codes depending on your product */
/** Upgrade code is constant for all version of a prod */
/**----------------------------------------------------*/
var sOpfUpgradeCode = "{80EA6A7B-9457-47E6-BADF-20B0CACE43A5}";
var sOpfInverseUpgradeCode = "B7A6AE0875496E74ABFD020BACEC345A";
/**----------------------------------------------------*/
/** Change the product codes depending on your product */
/** Following demonstrates 4 versions of a product. */
/**----------------------------------------------------*/
var sOpfProdKey3_0 = "{79E0052F-0A4C-4A8F-B959-6FE95F77C7C9}";
var sOpfProdKey3_1 = "{7F956C85-51A5-49B7-8A80-22D0179CD414}";
var sOpfProdKey3_2 = "{80A5D848-7E8C-43E3-9736-CCDEC9936E8E}";
var sOpfProdKey3_3 = "{83EF527D-019F-4922-84A3-9D090DFC1672}";
var sOpfInverseProdKey3_0 = "F2500E97C4A0F8A49B95F69EF5777C9C";
var sOpfInverseProdKey3_1 = "58C659F75A157B94A808220D71C94D41";
var sOpfInverseProdKey3_2 = "848D5A08C8E73E347963CCED9C39E6E8";
var sOpfInverseProdKey3_3 = "D725FE38F9102294483AD990D0CF6127";
main();
/**
* The main program. Does not have to be main could be anything.
*/
function main()
{
var Args:String[] = Environment.GetCommandLineArgs();
//Just executable means Arg count is 1 as usual. Args[0]
if(Args.length <= 1){
PrintSyntax();
}else{
try{
if(Args[1] == "3.0"){
RemoveProdKeys(sOpfProdKey3_0);
RemoveInverseProdKeys(sOpfInverseProdKey3_0);
RemoveInverseUpgradeCode(sOpfInverseUpgradeCode);
}
if(Args[1] == "3.1"){
RemoveProdKeys(sOpfProdKey3_1);
RemoveInverseProdKeys(sOpfInverseProdKey3_1);
RemoveInverseUpgradeCode(sOpfInverseUpgradeCode);
}
if(Args[1] == "3.2"){
RemoveProdKeys(sOpfProdKey3_2);
RemoveInverseProdKeys(sOpfInverseProdKey3_2);
RemoveInverseUpgradeCode(sOpfInverseUpgradeCode);
}
if(Args[1] == "3.3"){
RemoveProdKeys(sOpfProdKey3_3);
RemoveInverseProdKeys(sOpfInverseProdKey3_3);
RemoveInverseUpgradeCode(sOpfInverseUpgradeCode);
}
}catch(e){
Console.WriteLine("Error: "+ e.description);
PrintSyntax();
}
}
}
function PrintSyntax()
{
Console.WriteLine("Author Saugata Guha");
Console.WriteLine("delProd.exe {VersionNumber}");
Console.WriteLine("Where ");
Console.WriteLine(" VersionNumber could be 3.0 3.1 3.2, 3.3 or 4.0");
Console.WriteLine("N.B Please also kill all MSIEXEC.EXE and IDriver.exe processes");
Console.WriteLine("Use this only if uninstall fails to remove the hung product completely.");
}
function RemoveProdKeys(sOpfProdKey:String)
{
DelHungProdRegKeys(regHKCR,"Installer\\Products\\848D5A08C8E73E347963CCED9C39E6E8");
DelHungProdRegKeys(regHKLM
,"SOFTWARE\\Classes\\Installer\\Products\\848D5A08C8E73E347963CCED9C39E6E8");
DelHungProdRegKeys(regHKLM
,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"
+sOpfProdKey);
DelHungProdRegKeys(regHKLM
,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Management\\ARPCache\\InstallShield_"
+sOpfProdKey);
DelHungProdRegKeys(regHKLM
,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield Uninstall Information\\"
+sOpfProdKey);
regHKCR.Close();
regHKLM.Close();
}
/**
* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\00BAE79EEAD8C2C40855E1071FACE3A7
* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\00DC4201B7A985E408BF9878C47E7886
* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\0108655F2375B724BAB78F80541B8D98
* Tons of the above for each component.
* -> contains the inverse key
*/
function RemoveInverseProdKeys(sOpfProdKey:String)
{
DelHungProdRegKeys(regHKCR,"Installer\\Features\\"+sOpfProdKey);
DelHungProdRegKeys(regHKLM,"SOFTWARE\\Classes\\Installer\\Features\\"
+sOpfProdKey);
DelHungProdRegKeys(regHKLM
,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products\\"
+sOpfProdKey);
regHKCR.Close();
regHKLM.Close();
}
/**
* This call is same for all versions of the hung product.
*/
function RemoveInverseUpgradeCode(sOpfProdKey:String){
DelHungProdRegKeys(regHKCR,"Installer\\UpgradeCodes\\"+sOpfProdKey);
DelHungProdRegKeys(regHKLM,"SOFTWARE\\Classes\\Installer\\UpgradeCodes\\"
+sOpfProdKey);
DelHungProdRegKeys(regHKLM
,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UpgradeCodes\\"
+sOpfProdKey);
regHKCR.Close();
regHKLM.Close();
}
function DelHungProdRegKeys(regRoot:RegistryKey, skey1:String)
{
Console.WriteLine("----------------------------");
try{
// Clean RegKey 1.
var rkSubKey1:RegistryKey = regRoot.OpenSubKey(skey1);
if(rkSubKey1 != null){
Console.WriteLine("{0,-15}{1,-15}", "RegKeyName:"
, rkSubKey1.ToString());
// Print Subkeys
Console.WriteLine("{0,-15}", "Sub Keys:");
var sKeyNames1:String[] = rkSubKey1.GetSubKeyNames();
for(var i=0; i < sKeyNames1.Length; i++){
Console.WriteLine("{0,-15}{1,-15}", " ",sKeyNames1[i]);
}
// Print Value names.
Console.WriteLine("{0,-15}", "Value Names:");
var sKeyValNames:String[] = rkSubKey1.GetValueNames();
for(var i=0; i < sKeyValNames.Length; i++){
Console.WriteLine("{0,-15}{1,-15}{2,-15}", " "
, sKeyValNames[i]
, rkSubKey1.GetValue(sKeyValNames[i]).ToString());
}
rkSubKey1.Close();
Console.WriteLine("{0,-15}", "Deleting subkeytree...");
// Delete the Product Key 1
//rkSubKey1.DeleteSubKeyTree(); // Wrong.
try{
regRoot.DeleteSubKeyTree(skey1);
}
catch(e:Exception){
Console.WriteLine(skey1+" - Failed to delete subtree. "
+e.ToString());
}
}else{
Console.WriteLine("Key not found: "+ skey1);
}
}
catch(e:Exception){
Console.WriteLine(skey1+" - is not present. " +e.ToString());
}finally{
Console.WriteLine("{0,-15}", "");
}
}
Powered by vBulletin® Version 4.2.0 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.