【问题标题】:Windows Installshield condition is not getting triggered未触发 Windows Installshield 条件
【发布时间】: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


    【解决方案1】:

    在使用 REG_DWORD 类型时,Installshield 通常会在其前面加上“#”以与其他类型区分开来。尝试以下条件:

    未安装并且 (SecureLayerEnabled=#1)

    【讨论】:

      【解决方案2】:

      您首先需要启用安装日志记录。它可能会指出你为什么会这样。您可以使用 /l*V 或 enable it on the system before running the installer

      【讨论】:

      • 感谢您的提示,将尝试一下
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多