Flexera Software Community  

Go Back   Flexera Software Community > Products > InstallShield > InstallShield Windows 12
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 06-14-2007, 08:24 AM
Evan Machusak Evan Machusak is offline
New User (0 Posts)
 
Join Date: Nov 2006
Posts: 3
Critical IS12 flaw with COM Extract at Build

I've managed to minimally reproduce a very serious bug in IS12 SP2 by creating a setup package which is set to install a specific simple COM object.

This COM object is, from everything I can tell, inocuous. It's only a few hundred lines of standard C++ and nothing about its uuids or self-registration is strange.

Here's the problem:

When the component's key file is set to this DLL and the component's COM Extract at Build option is enabled, a seemingly random and critical registry key gets inserted into the resulting MSI file's Registry table.

The key is this:

Registry
_3CBC4CA2E57D497E8BBBBF817CD8B332

Root:
2 (HKLM)

Key:
System\CurrentControlSet\Services\Tcpip\Parameters

Name:
* (Create if nonexistent; delete on uninstall)

Value:
(blank)

Component:
MonitorMgr.dll

If you install this project (which copies only a single DLL - the destination folder is irrelevant) - when you uninstall it, your system will be completely hosed. Your TCP/IP stack will be corrupted because InstallShield is deleting one of its registry keys. Attempting to run ipconfig on a machine after this package has been installed causes ipconfig to fail with the missing registry key message ("the system cannot find the file specified). Rebooting will render the machine's network stack inoperable. The only way to fix your machine is to restore this registry key from another working machine of the same OS, revert to a system restore point, or repair the system using a Windows installation media.

This is unacceptable. Why would this key be inserted into the registry table? There is absolutely nothing in the source code of this DLL even remotely related to TCP/IP.

This issue can easily be worked around by simply disabling COM Extract at Build and manually extracting the com information by using the advanced node underneath the component. When using this method, all of the standard COM keys are added to the package's registry table as they should but the TCP/IP key is not there. The TCP key is only added to the registry table if COM Extract at Build is used.

This took me several weeks to figure out. I hosed my development machine more than once because of this mysterious bug. I only discovered it was a problem with InstallShield when QA started seeing the same problem when testing the setup.

Like I said, I can minimally reproduce this issue easily with this one DLL. I haven't seen any other DLLs that cause this problem. I can attach it for testing if you would like.

Cheers,
Evan Machusak
EMC Corporation
Reply With Quote
  #2  
Old 06-15-2007, 09:49 AM
Tatyana Tatyana is offline
User (5+ Posts)
 
Join Date: Mar 2007
Location: Russia
Posts: 13
I had just the similar problem.
See http://community.macrovision.com/sho...d.php?t=169306
The only solution I've found was to use Filters.xml to exclude undesired registry keys from COM extraction.
Hope this can help you.
Reply With Quote
  #3  
Old 06-18-2007, 07:39 AM
bryanwolf bryanwolf is offline
Uber User (1000+ Posts)
 
Join Date: Jan 2006
Posts: 1,081
Filters.xml is the suggested solution for this and these cases are the reason it was added.
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump


All times are GMT -6. The time now is 08:34 AM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
© 2010 Flexera Software Inc. All rights reserved.