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

标签 installation windows-installer installshield installshield-2012

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

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

这一切正常,直到用户使用不同的产品代码安装了 SMO - 我们的开发团队在安装 SQL2008 时总是会发生这种情况。 PRQ 启动的安装程序存在错误。

我需要更好的条件。我想做的是: 如果(版本 <= w.x.y.z || 未找到版本) 然后安装PRQ

InstallShield 先决条件编辑器中显示

The Following conditions must be met for the prerequisite to run. Here you can define files and registry keys that the prerequisite will look for to determine if it should be run. If there are no conditions, the prerequisite will always run.

这与我的发现一致 - 条件是 AND 组合在一起的。 XML 中是否有一些未发布的 OR 或否定条件? 我现在很烦恼,因为如果注册表中的版本<我正在安装的版本,则希望运行 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"是“注册表项具有指定的版本值” Comparison="2"是“目标系统上的数据小于指定数据”

附带问题:是否有枚举类型和比较的地方?

此比较类型没有与“目标系统上的数据小于指定数据或不存在”状态进行比较。就像现在一样,如果 key 存在于较低版本,则一切正常 - 但如果 key 不存在(即未安装 SMO),则不会安装 PRQ。

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

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

最佳答案

我通常做的不是使用诸如 ARP 条目之类的抽象事物来检测依赖性。我追求的是依赖本身。如果您需要 DLL,请查看该 DLL 是否存在,而不必担心检测到应该安装该 DLL 的内容。

关于installation - 是否可以在 Installshield 2012 PRQ 中使用逻辑 OR 或否定条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696489/

相关文章:

perl - Math::TrulyRandom 模块的 Dmake 文件错误

python - 在 Windows 上安装 SciPy

.NET 4 无法安装,因为 SECUREREPAIR 无法 CreateContentHash 文件 SetupResources.dll : for computing hash Error: 997

installshield - 如何在installshield中初始化复选框值

c++ - 将适用于 Visual Studio 2015 的 Visual C++ Redistributable 添加到 InstallShield

python - 如何在 Python 3.5 (OS X 10.10 Yosemite) 上安装 PyObjC?

windows - 如何使用 PowerShell 卸载应用程序?

c# - WiX - 如何使用配置文件来决定运行哪个 MSI?

installation - 以编程方式提取 InstallShield setup.exe 的内容

.net - 如果存在 Microsoft SQL Server 实例,则绕过 SQLExpress 的安装