【发布时间】:2019-07-15 11:20:05
【问题描述】:
我们的产品安装程序是用 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--> Version 设置为 1。但是,安装程序不会触发此检查。有趣的是版本是 REG_DWORD 类型。但是,如果我将 Version 的类型更改为 REG_SZ,则条件会成功触发。但是当版本是 REG_DWORD 类型时,我需要让它工作。我试图删除以下条件中的“”--
Not Installed And (SecureLayerEnabled=1)
但即使这样也行不通。当版本为 REG_DWORD 类型时如何使其工作的任何帮助将不胜感激
【问题讨论】:
标签: windows windows-installer installshield