通过 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 中显示...如果用户更改值,最终 属性 会更新
执行序列
支持静默安装的相同流程。
我从我们的 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 中显示...如果用户更改值,最终 属性 会更新
执行序列 支持静默安装的相同流程。