CoreyZ
Level 5

Registry entry not being created

Installshield 2011 Premier
Basic MSI

I am doing what seems should be one of the most basic things through Installshield, creating a registry entry..

However it seems that no matter how I add it to my project, it never ends up where the final install creates the entry. I have been attempting to add the registry entry of HKLM/SOFTWARE/CSS/FRAMEWORK/Default (value blank as well as tried with a value of [INSTALLDIR]) and have done so by either adding a new component to a feature (no file associated) that creates the entry, as well as having an existing component create the registry key. Neither one of them seem to work and I feel as I have been beating my head against the desk all day.
I have verified that the data displays in the registry table of the MSI. Logging doesnt seem to indicate that there was a failure or error in creating the key, however it just doesnt exist.

Any suggestions of where to look?
Labels (1)
0 Kudos
6 Replies
snip_1415
Level 4

Do you know about the installation state of the component in the log file. Was the component (OR feature) installed at all or not. Look for "InstallValidate" text in the log file and under this u will know the installation states for the feature and components. It should be something like below:

Feature: , Installed: , Request: , Action.

If possible share the log file.

Regards
snip
0 Kudos
CoreyZ
Level 5

All the components install correctly and the log file snippet below is of the component that the registry entry is attached to...

Component: __MessageQueueRouterService.exe65; Installed: Null;   Request: Local;   Action: Local
Component: MessageQueueRouterService.exe; Installed: Absent; Request: Local; Action: Local


This seems to be the log piece showing the creation of the registry value:
[CODE]MSI (s) (F8:4C) [08:19:44:768]: Executing op: ActionStart(Name=WriteRegistryValues,Description=Writing system registry values,Template=Key: [1], Name: [2], Value: [3])
Action 8:19:44: WriteRegistryValues. Writing system registry values
MSI (s) (F8:4C) [08:19:44:768]: Executing op: ProgressTotal(Total=1,Type=1,ByteEquivalent=13200)
MSI (s) (F8:4C) [08:19:44:768]: Executing op: RegOpenKey(Root=-2147483646,Key=SOFTWARE\CSS\FRAMEWORK,,BinaryType=0,,)
MSI (s) (F8:4C) [08:19:44:768]: Executing op: RegAddValue(,,)
WriteRegistryValues: Key: \SOFTWARE\CSS\FRAMEWORK, Name: , Value: [/CODE]
0 Kudos
CoreyZ
Level 5

Ok, so I found that it is installing it... however it is not installing it in the path I specified in the registry. Instead, it is installing it to:
HKLM\Software\Wow6432Node\CSS\Framework\

instead of:

HKLM\Software\CSS\Framework\


Realized after researching that... that it was due to being installed on a 64bit OS as 32 bit applications use the resulting directory while 64 bit use the one I was attempting to input.

I have now attempted to use the "Disable Registry Reflection" setting as "Yes" so that it shouldnt change depending on the OS version (as we are using this as just storing some information, not settings). It still however is reflecting to the 32 bit section of the registry as it originally was and seems to be ignoring the reflection setting entirely.... (test machine is server 2008 R2 with windows installer 5.0)

Ideas? Id like to get the registry entry to always display in the common hklm/software key
0 Kudos
gknierim
Level 6

You might need to do the following before creating your key so that it writes to the 64 bit part of the registry:

REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY;
0 Kudos
snip_1415
Level 4

If you always want the registry entry to go to common HKLM\Software then its better to create a 64 bit installation because HKLM\Software is dedicated for 64 bit installations and if that is what u want u should choose a 64 bit package.

Having created a 32 bit package then working around to move the registry to 64 bit hive is not a good idea.

I would suggest you to create a 64 bit package because this is what u want. Is there a limitation as to why u dont want a 64 bit package???
0 Kudos
CoreyZ
Level 5

snip_1415 wrote:
If you always want the registry entry to go to common HKLM\Software then its better to create a 64 bit installation because HKLM\Software is dedicated for 64 bit installations and if that is what u want u should choose a 64 bit package.

Having created a 32 bit package then working around to move the registry to 64 bit hive is not a good idea.

I would suggest you to create a 64 bit package because this is what u want. Is there a limitation as to why u dont want a 64 bit package???


It was my understanding that by creating a 64 bit package, it would not install to a 32 bit machine?
0 Kudos