我有一个prq,它安装 ms sql共享管理对象。如果此注册表项不存在

,我有一个安装prq的条件
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{08ECC740-2B3E-45D7-860C-59B511386286}
.

这工作正常,直到用户安装了不同的产品代码,这在我们安装SQL2008时所有时间都会发生在我们的Dev团队中。 PRQ启动的安装程序存在错误。

我需要一个更好的条件。我想做的就是: if(版本<= w.x.y.z ||没有找到版本) 然后安装prq

InstallShield先决条件编辑器中说

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

这与我的调查结果同意 - 条件是在一起的。是否有一些未发布的酱汁或或否定XML的条件? 我现在被烦恼,因为如果注册表中的版本是<我正在安装的版本,请运行prq。

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

type=“32”是'注册表项具有指定的版本值' 比较=“2”是目标系统上的数据小于指定数据'

侧面问题:是否有一个类型和比较被列举的地方?

此比较类型与状态系统上的状态的比较小于指定数据或不存在'。就像现在一样,如果密钥存在于较低的版本工作中,但如果键不存在(即,未安装Smo),则未安装PRQ。

有没有办法制作这项工作? “具有某些版本存在的文件”条件确实有一个文件的版本小于上面指定的版本(或在目标系统上找不到文件)选项。但它不会有效检查SMO安装的文件 - 用户可能已将其安装到C:。

我希望我错过了一些东西。你会怎么办?

有帮助吗?

解决方案

我通常做的是不使用像ARP条目等抽象的东西来检测依赖关系。我去依赖自己。如果您需要DLL,那么请查看DLL是否存在DLL,而不是担心检测应该安装DLL的内容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top