HKCU Keys, Separate Componets
I'm working with Interwoven iManage DeskSite v8.2 and Interwoven iManage FileSite 8.2 (document management system client applications)
Installing the application goes fine, with no problems - and our firm wants to add customizations to the views, settings, etc for each user -- these are all stored by registry entries located in the HKCU hive. The only issue is there are A LOT of registry entries -- probably upwards of 200 entries. [:(]
My initial approach to achieve this would be to create new components for each registry entry, and make this registry entry a key path in the component (to allow for self-repair on first running the application). Each component would only have one registry entry -- as there can only be one key per component.
As you can probably guess, there will be A LOT of components (as there are a lot of registry entries to self-heal).
Is it a good idea to do it this way? Is there a better, more efficient way of achieving this?
Thanks in advance for your input!
*edit*
Wanted to add this will be deployed via AD Group Policy and created using Macrovision InstallSheild Editor 11.5
Answers (8)
What if I utilized ActiveSetup for this...
From ActiveSetup, can I have it run a simple registry file (ex. reg_customizations.reg) which only contains HKCU data? This file would be stored locally (in the INSTALLDIR)...
In the article, they have ActiveSetup running "Msiexec.exe /fpu....." which will fire off a repair function. I don't really want it to repair in this sense (since the HKCU isnt located in the package). Could I just have ActiveSetup fire off a registry file to merge the data into the HKCU hive??
Apparently ActiveSetup can execute anything (VBscript, EXE, Reg file, etc) as long as it's in the StubPath value. I had to play around with it a bit to get it to finally work, but here's what I ended up with;
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{8B4B08BC-C27C-41F7-9572-3FBE3409637F}]
"StubPath"="C:\\WINDOWS\\regedit.exe /s \"C:\\Program Files\\Interwoven\\WorkSite\\custom_hkcu.reg\""
"Version"="1"
The GUID under the "Installed Components" is the same GUID of the Product Code for the MSI package.
I also noticed that I was unable to achieve the desired results by attempting to use a system variable (ex. %ProgramFiles% instead of C:\Program Files\) in the path to the local .reg file -- ex. "%ProgramFiles%\Interwoven\Worksite\custom_hkcu.reg" did *not* work, while "C:\Program Files\Interwoven\Worksite\custom_hkcu.reg" worked!
And just having the path to the .reg file worked without having to have quotes, but since it was desirable to have the registry changes added silently, then adding the quotes to path was preferred.
Thanks to everyone on the forum that posted about ActiveSetup in the past -- there's some very good info out there! [:D]
Hi JdotQ,
alway nice to see people make their own findings. :-)
However, let me make a few comments:
Wouldn't do it with the registry file approach. This has caveats, like having hard coded paths in their.
The best way to go, IMHO, would be to do it with the MSI's registry table. You don't need a new component for each line.
A few - or just a single one - does the trick. Figure out, which one really have to be keys (you wouldn't have any keys with reg file).
And isolate this stuff in a single top feature. See: http://www.itninja.com/question/current-user-self-healing
Then call it initially with Active Setup: msiexec /fu {Productcode}
Regards, Nick
ORIGINAL: nheim
Hi JdotQ,
alway nice to see people make their own findings. :-)
However, let me make a few comments:
Wouldn't do it with the registry file approach. This has caveats, like having hard coded paths in their.
The best way to go, IMHO, would be to do it with the MSI's registry table. You don't need a new component for each line.
A few - or just a single one - does the trick. Figure out, which one really have to be keys (you wouldn't have any keys with reg file).
And isolate this stuff in a single top feature. See: http://www.itninja.com/question/current-user-self-healing
Then call it initially with Active Setup: msiexec /fu {Productcode}
Regards, Nick
Thanks Nick and jmc for the reply.
If I understand it correctly -- having all these registry entries in one component, there can only be one key per component, so there would only be one registry entry could be a key. And when the self heal starts, it only repairs the key files? So only one registry entry (the key) would be written to HKCU? Or will it repair every registry value inside the component, even if they are not key components?
Thanks again!
If you do this reference counting will be performed on the component (basically the dll) the registry would be part of the component and would be deployed whenever the dll is deployed.
this becomes a little more complex if you have HKCU registry as well but this is unlikely in the event your registering a dll
hkcu can go in a separate component.
I have written some articles on self healing and posted them here and wise and myitforum if you want more detail lookup
"Current User Healing"
it explains the entire healing process in detail.
so that the conversation will remain readable.