Windows Installshield 条件未被触发
Windows Installshield condition is not getting triggered
我们的产品安装程序是用 installshield 编写的。我正在努力做一个简单的安装程序更改,它将检查注册表值,如果该值设置为 1,它将返回一条错误消息并中止安装。
<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>
下面是 InstallExecuteSequence 中定义的条件 --
<row><td>VM_ErrNoSecureBoot</td><td>Not Installed And (SecureLayerEnabled="1")</td><td>401</td><td/><td/></row>
我已经检查过机器中的值 SYSTEM\CurrentControlSet\Control\SecureLayer\State--> 版本设置为 1。但是,安装程序不会触发此检查。有趣的是 Version 的类型是 REG_DWORD。但是,如果我将版本类型更改为 REG_SZ,则条件会成功触发。但是当 Version 类型为 REG_DWORD 时,我需要让它工作。我试图在如下情况下删除 "" --
Not Installed And (SecureLayerEnabled=1)
但即使这样也行不通。任何有关如何在 Version 类型为 REG_DWORD 时使其工作的帮助将不胜感激
您首先需要启用安装日志。它可能会指出为什么会这样。您可以使用 /l*V 或 enable it on the system before running the installer.
使用REG_DWORD类型时,Installshield一般会在其前面加上'#'以区别于其他类型。尝试以下条件:
未安装并且 (SecureLayerEnabled=#1)
我们的产品安装程序是用 installshield 编写的。我正在努力做一个简单的安装程序更改,它将检查注册表值,如果该值设置为 1,它将返回一条错误消息并中止安装。
<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>
下面是 InstallExecuteSequence 中定义的条件 --
<row><td>VM_ErrNoSecureBoot</td><td>Not Installed And (SecureLayerEnabled="1")</td><td>401</td><td/><td/></row>
我已经检查过机器中的值 SYSTEM\CurrentControlSet\Control\SecureLayer\State--> 版本设置为 1。但是,安装程序不会触发此检查。有趣的是 Version 的类型是 REG_DWORD。但是,如果我将版本类型更改为 REG_SZ,则条件会成功触发。但是当 Version 类型为 REG_DWORD 时,我需要让它工作。我试图在如下情况下删除 "" --
Not Installed And (SecureLayerEnabled=1)
但即使这样也行不通。任何有关如何在 Version 类型为 REG_DWORD 时使其工作的帮助将不胜感激
您首先需要启用安装日志。它可能会指出为什么会这样。您可以使用 /l*V 或 enable it on the system before running the installer.
使用REG_DWORD类型时,Installshield一般会在其前面加上'#'以区别于其他类型。尝试以下条件:
未安装并且 (SecureLayerEnabled=#1)