是否可以在Installshield 2012 PRQ中使用逻辑OR或否定条件?

时间:2012-10-02 18:57:09

标签: installer windows-installer installshield installshield-2012

我有一个安装 MS SQL共享管理对象的PRQ。如果此注册表项不存在,我有条件安装PRQ

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{08ECC740-2B3E-45D7-860C-59B511386286}

在用户安装了使用不同产品代码的SMO之前,这样可以正常工作 - 这在我们的开发团队安装SQL2008时会一直发生。 PRQ启动的安装程序存在错误。

我需要一个更好的条件。我想做的是: 如果(Version< = w.x.y.z || No Version found) 然后安装PRQ

InstallShield先决条件编辑器中,它说

  

必须满足以下条件才能运行先决条件。   在这里,您可以定义先决条件所在的文件和注册表项   寻找确定是否应该运行。如果没有   条件,先决条件将永远运行。

这与我的发现一致 - 条件是和的。是否存在一些未发表的OR或者否定XML中的条件? 我现在很烦恼,因为如果注册表中的版本是<我正在安装什么。

<conditions>
    <condition Type="32" Comparison="2" 
       Path="HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\SharedManagementObjects\CurrentVersion" 
       FileName="Version" ReturnValue="10.1.2531.0">
    </condition>
</conditions>

类型=&#34; 32&#34;是&#39;注册表项具有指定的版本值&#39; 比较=&#34; 2&#34;目标系统上的数据少于指定数据&#39;

附带问题:是否存在枚举类型和比较的位置?

此比较类型与州&#39;目标系统上的数据的比较小于指定数据或不存在&#39;。就像现在一样,如果密钥存在于较低版本,则可以正常工作 - 但如果密钥不存在(即SMO未安装),则不会安装PRQ。

有没有办法让这项工作?存在具有特定版本的&#39; A文件&#39;如果文件的版本低于上面指定的版本(或目标系统上的文件未找到)选项,则条件确实有。但它无法检查由SMO安装的文件 - 用户可能已将其安装到C:以外的某个驱动器上。

我希望自己错过一些东西。你会怎么做?

1 个答案:

答案 0 :(得分:2)

我通常做的不是使用像ARP条目这样的抽象事物来检测依赖关系。我自己去寻求依赖。如果你需要一个DLL,那么看看DLL是否存在,而不是担心检测应该安装DLL的东西。