我从我们的wxs文件中得到以下代码片段。我需要了解为什么我们需要CustomAction SetInstallType
?通过CustomAction设置属性
我认为INSTALLATIONTYPE
属性将从Registrykey中设置。因为它是一个公共属性,我想我也可以在运行msiexec
时从命令行传递它。 我从commandLine发送的值会覆盖从注册表获得的值吗?
<Property Id="INSTALLATIONTYPE"> <RegistrySearch Id='InstallType' Root='HKLM' Key='SOFTWARE\MyProduct\PR\ROOT' Name='Configuration' Type='raw'/> </Property> <CustomAction Id="SetInstallType" Property="INSTALLATIONTYPE" Value="[INSTALLATIONTYPE.DEFAULT]"/> <InstallExecuteSequence> ...... <Custom Action="SetInstallType" After="AppSearch">INSTALLATIONTYPE.DEFAULT </Custom> ..... </InstallExecuteSequence>
我试图从命令行传递的INSTALLATIONTYPE
值喜欢INSTALLATIONTYPE=FULL
但它被视为一个新的属性,而不是改变现有属性的值。
单独'RegistrySearch'是否足以搜索注册表值并将其分配给属性?如果我只有'RegistrySearch'是否提供了我在命令行提供的值覆盖它的值? – 2015-02-10 04:54:21
'RegistrySearch'是一个抽象,不存在。它将行写入Appearch和Reglocator表中,然后由AppSearch操作进行处理。您在命令行传递的属性是初始值,然后被AppSearch覆盖。记录安装程序(msiexec/I foo.msi/l * v install.log),您将看到显示此情况的部分。 – 2015-02-10 11:58:26
好的。当我进行管理安装时,我会在日志中看到这些吗? – 2015-02-10 13:22:36