我已经使用 InstallShield 2014 为服务器/客户端程序创建了一个基本 MSI 安装程序,并且必须根据在安装我们的服务器应用程序之前安装的数据库的许可证密钥动态隐藏功能。我已经为需要隐藏的功能创建了条件,如果它们没有被许可,则将 InstallLevel 设置为 0,如果它们被许可,则设置为 1。我在 SQL 登录对话框之后获得了许可证密钥(因为安装程序不知道要查看哪个数据库),但是在创建对话框之前运行的 CostFinalize 操作期间评估条件。因此,在我获得许可证密钥并运行其他一些自定义操作以确定每个功能的可用性之后,我会在显示 CustomSetup 对话框之前调用 CostFinalize 操作。
对于需要显示的功能,我得到了正确的行为,您可以在对话框中选择或取消选择所述功能,但是,当安装执行时,未安装所选功能......并且日志文件显示即使用户明确选择了该功能,也不会选择安装该功能。为什么会发生这种情况?是否有另一种动态隐藏功能的方法(我在 InstallScript 操作中尝试过 FeatureSetData 功能,但无济于事)?
此外,在将条件添加到功能后,每当我尝试从“程序和功能”应用程序中卸载该程序时,都会收到错误 1606 无法访问网络位置。当功能存在条件时,就像注册表项被弄乱了......任何帮助将不胜感激。