代码
if (rkLocalMachine != null )
{
rkUninstalls = rkLocalMachine.OpenSubKey(STRBIT32); // Uninstall Gen build from 32bit WinOS.
public
void
UninstallGenWFM()
{
string strReturnMsg;
string productGuid;
string subKey;
string displayName;
string strMajVersion;
string strGenBuildNum;
string strLocalInsFolder;
string uninstallCmd;
string strUnistallCmdLine;
strUnistallCmdLine = uninstallCmd = strLocalInsFolder = strMajVersion = displayName = subKey = productGuid = strReturnMsg = string .Empty;
{
string strReturnMsg;
string productGuid;
string subKey;
string displayName;
string strMajVersion;
string strGenBuildNum;
string strLocalInsFolder;
string uninstallCmd;
string strUnistallCmdLine;
strUnistallCmdLine = uninstallCmd = strLocalInsFolder = strMajVersion = displayName = subKey = productGuid = strReturnMsg = string .Empty;
public const string STRBIT32 = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
public const string STRBIT64 = "SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
if (rkLocalMachine != null )
{
rkUninstalls = rkLocalMachine.OpenSubKey(STRBIT32); // Uninstall Gen build from 32bit WinOS.
uninstallKeys
=
rkUninstalls.GetSubKeyNames(); // Get all install keys.
foreach
(
string
uninstallKey
in
uninstallKeys)
{
if (uninstallKey.Length > 14 )
{
string installShield = uninstallKey.Substring( 0 , 14 );
if (installShield == " InstallShield_ " ) // If it is a shield key.
{
productGuid = uninstallKey.Substring( 14 ); // Get the pid.
subKey = strKeyCurrent + " \\ " + uninstallKey;
RegistryKey rkUninstallKey = rkLocalMachine.OpenSubKey(subKey); // Open subkey list in regist.
if (rkUninstallKey != null )
{
// Geneva Workflow Manager for ACA
displayName = (String)rkUninstallKey.GetValue( " DisplayName " , String.Empty);
if (displayName.Length >= 25 && displayName.Substring( 0 , 31 ) == " Geneva Workflow Manager for ACA " )
{
string displayVersion = (String)rkUninstallKey.GetValue( " DisplayVersion " , String.Empty);
strReturnMsg = " Found installed product: " + displayName + " , Version: " + displayVersion + " + " ;
// Write to log file.
oLOG.WRITELOG(strReturnMsg);
strMajVersion = this .strGenVersion.Substring( 0 , 5 );
if (displayVersion != strMajVersion)
{
uninstallCommand = (String)rkUninstallKey.GetValue( " UninstallString " , String.Empty);
strReturnMsg = " +++++Prepare to uninstall this build !+ " ;
// Write to log file.
oLOG.WRITELOG(strReturnMsg);
}
}
}
}
}
}
if (uninstallCommand != string .Empty)
{
try
{
strGenBuildNum = this .strGenVersion.Substring( 6 , 4 ); // Get the Geneva application build number.
strGenVersion = strGenVersion.Replace( " . " , " _ " );
string copyLocalFolder = " copyLocalFolder " ;
string uninstallLogFile = Path.Combine(copyLocalFolder, " uninstall_ " + this .strGenVersion + " .txt " );
int iFindCommand = uninstallCommand.IndexOf( " -runfromtemp " );
uninstallCmd = uninstallCommand.Substring( 0 , iFindCommand - 1 );
strUnistallCmdLine = uninstallCommand.Substring(iFindCommand);
strUnistallCmdLine = ( " /uninst /verbose\ "" + uninstallLogFile);
string issfile = Path.Combine(copyLocalFolder, " uninstall.iss " );
Process pUninstall = new Process();
pUninstall.StartInfo.FileName = uninstallCmd;
pUninstall.StartInfo.Arguments = strUnistallCmdLine;
EventLog.WriteEntry( " A1 " , uninstallCmd);
EventLog.WriteEntry( " A2 " , strUnistallCmdLine);
pUninstall.Start();
pUninstall.WaitForExit();
}
catch (Exception xe)
{
strReturnMsg = " Has an Error ! " + xe.Message + " + " ;
// Write to log file.
oLOG.WRITELOG(strReturnMsg);
}
}
else {
strReturnMsg = " No Geneva Application be installed ! + " ;
// Write to log file.
oLOG.WRITELOG(strReturnMsg);
}
}
else
{
strReturnMsg = " Can not get the regedit message from server! + " ;
// Write to log file.
oLOG.WRITELOG(strReturnMsg);
}
Console.WriteLine(strReturnMsg);
}
{
if (uninstallKey.Length > 14 )
{
string installShield = uninstallKey.Substring( 0 , 14 );
if (installShield == " InstallShield_ " ) // If it is a shield key.
{
productGuid = uninstallKey.Substring( 14 ); // Get the pid.
subKey = strKeyCurrent + " \\ " + uninstallKey;
RegistryKey rkUninstallKey = rkLocalMachine.OpenSubKey(subKey); // Open subkey list in regist.
if (rkUninstallKey != null )
{
// Geneva Workflow Manager for ACA
displayName = (String)rkUninstallKey.GetValue( " DisplayName " , String.Empty);
if (displayName.Length >= 25 && displayName.Substring( 0 , 31 ) == " Geneva Workflow Manager for ACA " )
{
string displayVersion = (String)rkUninstallKey.GetValue( " DisplayVersion " , String.Empty);
strReturnMsg = " Found installed product: " + displayName + " , Version: " + displayVersion + " + " ;
// Write to log file.
oLOG.WRITELOG(strReturnMsg);
strMajVersion = this .strGenVersion.Substring( 0 , 5 );
if (displayVersion != strMajVersion)
{
uninstallCommand = (String)rkUninstallKey.GetValue( " UninstallString " , String.Empty);
strReturnMsg = " +++++Prepare to uninstall this build !+ " ;
// Write to log file.
oLOG.WRITELOG(strReturnMsg);
}
}
}
}
}
}
if (uninstallCommand != string .Empty)
{
try
{
strGenBuildNum = this .strGenVersion.Substring( 6 , 4 ); // Get the Geneva application build number.
strGenVersion = strGenVersion.Replace( " . " , " _ " );
string copyLocalFolder = " copyLocalFolder " ;
string uninstallLogFile = Path.Combine(copyLocalFolder, " uninstall_ " + this .strGenVersion + " .txt " );
int iFindCommand = uninstallCommand.IndexOf( " -runfromtemp " );
uninstallCmd = uninstallCommand.Substring( 0 , iFindCommand - 1 );
strUnistallCmdLine = uninstallCommand.Substring(iFindCommand);
strUnistallCmdLine = ( " /uninst /verbose\ "" + uninstallLogFile);
string issfile = Path.Combine(copyLocalFolder, " uninstall.iss " );
Process pUninstall = new Process();
pUninstall.StartInfo.FileName = uninstallCmd;
pUninstall.StartInfo.Arguments = strUnistallCmdLine;
EventLog.WriteEntry( " A1 " , uninstallCmd);
EventLog.WriteEntry( " A2 " , strUnistallCmdLine);
pUninstall.Start();
pUninstall.WaitForExit();
}
catch (Exception xe)
{
strReturnMsg = " Has an Error ! " + xe.Message + " + " ;
// Write to log file.
oLOG.WRITELOG(strReturnMsg);
}
}
else {
strReturnMsg = " No Geneva Application be installed ! + " ;
// Write to log file.
oLOG.WRITELOG(strReturnMsg);
}
}
else
{
strReturnMsg = " Can not get the regedit message from server! + " ;
// Write to log file.
oLOG.WRITELOG(strReturnMsg);
}
Console.WriteLine(strReturnMsg);
}