通过 CustomAction 设置 属性

Setting up Property via CustomAction

我从我们的 wxs 文件中获得了以下片段。我需要了解为什么我们需要 CustomAction SetInstallType?

我假设 INSTALLATIONTYPE 属性 将从 Registrykey.Since 设置它是 public 属性 我想我也可以从命令行 while 运行 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,但它被视为新的 属性 而不是更改现有 属性 的值.

AppSearch Action 将读取注册表值并将其分配(在此过程中覆盖)到您的 属性,无论它具有什么值。

诀窍是建立 属性 优先模式:

从最重要到最不重要:

1) 在 UI 中选取的值(如果浮出水面)

2) 在命令行传递的值(如果提供)

3) 从注册表中检索到的值(如果存在)

4) 默认值

UI 序列 AppSearch - 将注册表读取到临时变量 设置 属性 将 temp 分配给 final if final null ( Not 属性 ) 将 属性 默认值设置为 final if final null ( Not 属性 )

在 UI 中显示...如果用户更改值,最终 属性 会更新

执行序列 支持静默安装的相同流程。