Installshield隐藏功能与开关

时间:2016-06-07 09:11:30

标签: installshield installscript

我目前正在构建一个安装程序,根据启动时是否调用了交换机来安装不同的组件

设置1:触发安装程序

设置2:使用参数/ vSERVERTYPE = Server

触发安装程序

当触发设置1时,我想隐藏用户的功能

我目前有以下InstallShield InstallScript代码:

if(serverInstallSwitch != "Server") then
    MessageBox("Not a server install", INFORMATION);
    FeatureSetData (MEDIA,
        "Sybase_Database_Service_64bit",
        FEATURE_FIELD_VISIBLE, FALSE,
        "");        
endif;

然而,这不起作用,它确实显示了消息框"不是服务器安装"但它并没有隐藏这个功能。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

这看起来并不完整;如何从/ vSERVERTYPE = Server到serverInstallSwitch?从命令行格式,我预计这是一个基于MSI的安装,希望是具有自定义操作的基本MSI。因此,我希望看到MsiGetProperty(... "SERVERTYPE" ...)的来电,并使用Feature Conditions隐藏该功能。 (请注意,这需要将级别设置为0,如果您不是一直这样做,那么这样做会有风险,因此请使用某种记忆属性模式。(实际上,对于基本的MSI,您应该使用它更进一步,避免完全使用自定义操作。)

如果这是纯InstallScript,请转而使用/ z参数和CMDLINE variable。我希望看到查询CMDLINE变量的代码,可能使用%运算符。然后你对FeatureSetData调用的调用更可能是正确的。

如果您使用的是InstallScript MSI,则必须尝试查看这些方法的哪些部分有效。并不总是很容易预测哪些东西使用的是使用InstallScript方法的Basic MSI方法,哪种方法可以使用。