PDA

View Full Version : The deleted registry makes trouble



EricChao
06-24-2004, 06:09 AM
Hi,
I am a new guy in Install Shield field. I encountered a deleted registry problem. Hope I can obtain the solutions. The version I build is Developer 7.0 plus SP4. When I setup our products (A), the registry of A will be written in Local_machine\SOFTWARE\CoreSystem\700 and another product (B) will be written in Local_machine\SOFTWARE\CoreSystem\Mesh\R7.

When I remove A (no matter by Add/Remove program or double click on setup.exe), all the registry under \CoreSystem will be deleted. This makes me troubled because the B will not work due to the deleted registry. Does anyone else encounter this kind of problem? Hope I can get the solution here.

Sincerely,
Eric

WISeAgent
06-24-2004, 07:48 AM
I was under the suspection that you've set the reg key property to "Uninstall entire key (-)" for your "Local_machine\SOFTWARE\CoreSystem" entry.

One quick way to find out is to click "Registry" under "configure the Target System" node and expand the "destination computer's Registry view" to display "CoreSystem". right click on "coresystem" and you'll find out setting for it. Normally option "automatic" is the safest choice, unless you have special requirement.

Hope the info will be of help;)



Regards,
W Wang

EricChao
06-24-2004, 09:49 AM
Thanks for your reply. Actually, the status of the Local_machine\SOFTWARE\CoreSystem is set as "Automatic". I just try to set it as "Install only" to make sure that the registry will not be deleted during uninstallation. Unfortunately, I failed. The registry is still deleted during uninstallation. Another question is "Install only" is grayed, I can not make sure if my setting takes effect. :confused:

WISeAgent
06-24-2004, 05:26 PM
From memory, if the key is created by "importing" from local machine setting, the key will be greyed out. But my memory could be failing me;)

Helgorian
06-30-2004, 05:39 PM
Well, my experience in this field is: if you having trouble yet with cross-interference by "normal" installations, prepare for further and worse disappointments when dealing with (major) upgrades!
(Automatic registry clean-up obviously wasn't performed after uninstallation part of previous version but even after installation part of the new version -- thus killing all freshly implemented reg settings!)

After running through couple of nightmares, I started to wrap all registry settings in my install scripts with Disable/Enable(LOGGING) statements. This gave me full control and works perfectly -- of course one is forced to clean all up programmatically on uninstallation events! :-(
Much work, but the only reliable way it seems.

Please don't ask me about achieving this in scriptless basic projects. I would be so glad if anyone could give hints how to obtain expected behaviour without heavy scripting.
(But please spare me with standard phrases like "all reg settings should be done via IDE", I have to do heavy dynamics on runtime there!)

EricChao
06-30-2004, 09:40 PM
Yes. I tried the method you mentioned, and it worked. :) My registry is created by scripting bofore. Now, I just add Enable/Disable (LOGGING) statement into the script.

Disable(LOGGING);
// Create a key with no class value.
szKey = "SOFTWARE\\CoreSystem";
szClass = "";
This part will not be removed during un-installation.

Enable(LOGGING);
// Create a key with no class value.
szKey = "SOFTWARE\\CoreSystem\\700";
szClass = "";
This part will be removed during un-installation.

I solved the problem of deleted registry by using the script. Thanks for your kindly help.

Regards,
Eric