Our product installer is written in installshield. I am working on to make a simple installer change, that will check a registry value, and if that value is set to 1, it will throw back an error message and abort installation.
<table name="AppSearch">
<col key="yes" def="s72">Property</col>
<col key="yes" def="s72">Signature_</col>
<row><td>SecureLayerEnabled</td><td>securelayerEnabled</td></row>
<table name="RegLocator">
<col key="yes" def="s72">Signature_</col>
<col def="i2">Root</col>
<col def="s255">Key</col>
<col def="S255">Name</col>
<col def="I2">Type</col>
<row><td>securelayerEnabled</td><td>2</td><td>SYSTEM\CurrentControlSet\Control\SecureLayer\State</td><td>Version</td><td>2</td></row>
And below is the condition defined in InstallExecuteSequence--
<row><td>VM_ErrNoSecureBoot</td><td>Not Installed And (SecureLayerEnabled="1")</td><td>401</td><td/><td/></row>
I have checked that in the machine, the value SYSTEM\CurrentControlSet\Control\SecureLayer\State--> Version is set to 1. However, the installer does-not fire this check. Interesting thing is that the Version is of type REG_DWORD. However, if I change the type of Version to REG_SZ, the condition fires successfully. But I need to make it work when Version is of type REG_DWORD. I tried to remove the "" in the condition like below --
Not Installed And (SecureLayerEnabled=1)
But even this does-not work. Any help on how to make it work when Version is of type REG_DWORD will be appreciated
When using REG_DWORD type, Installshield generally prefix it with '#' to distinguish it from other types. Try the following condition:
Not Installed And (SecureLayerEnabled=#1)