我有一个安装 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:以外的某个驱动器上。
我希望自己错过一些东西。你会怎么做?答案 0 :(得分:2)
我通常做的不是使用像ARP条目这样的抽象事物来检测依赖关系。我自己去寻求依赖。如果你需要一个DLL,那么看看DLL是否存在,而不是担心检测应该安装DLL的东西。