【问题标题】:How to specify <SecureCustomProperties Property="PROP1;PROP2"/> in wix .wxs file如何在 wix .wxs 文件中指定 <SecureCustomProperties Property="PROP1;PROP2"/>
【发布时间】:2018-04-11 21:03:53
【问题描述】:

我想在 Wix 安装程序的 wix .wxs 文件中将属性指定为受限属性。

  <Property Id="PROP1">
     <RegistrySearch Id="Prop1"
                     Root="HKLM"
                     Key="SYSTEM\CurrentControlSet\Services\mysvc"
                     Name="installers"
                     Type="raw" />
  </Property>
  <Property Id="PROP2">
     <RegistrySearch Id="Prop2"
                     Root="HKLM"
                     Key="SYSTEM\CurrentControlSet\Services\mysvc"
                     Name="DisplayName"
                     Type="raw" />
  </Property>

有什么想法吗?

想要将PROP1PROP2 设为私有/安全。

尝试将它们设为小写,但 RegistrySearch 不接受:

错误 CNDL0012:Property/@Id 属性的值“Prop1”不能 包含小写字符。

既然这是一个搜索属性,它也必须是一个公共属性。这意味着 Property/@Id 值必须完全大写。

【问题讨论】:

  • 您要确保什么行为?听起来您想阻止用户覆盖此属性的值,但 SecureCustomProperties 没有这种效果。 (如果有的话,它更接近相反。)

标签: wix windows-installer


【解决方案1】:

我认为您需要为 Property 元素设置属性 Secure="yes",以便将相关属性添加到您编译的 MSI 文件中的 SecureCustomProperties 列表中。

示例

<Property Id="MYPROPERTY1" Secure="yes" Value="SomeValue" /> 
<Property Id="MYPROPERTY2" Secure="yes" Value="SomeOtherValue" /> 

编译后的 MSI 中生成的 SecureCustomProperties 值(还有两个自动生成的属性):MYPROPERTY1;MYPROPERTY2;WIX_DOWNGRADE_DETECTED;WIX_UPGRADE_DETECTED

您的情况

因此,在您的情况下,如下所示(我将属性值设置为 0,以防注册表搜索一无所获 - 然后我有一个默认值):

<Property Id="PROP1" Secure="yes" Value="0" >
   <RegistrySearch Id="Prop1"
                   Root="HKLM"
                   Key="SYSTEM\CurrentControlSet\Services\mysvc"
                   Name="installers"
                   Type="raw" />
</Property>

SecureCustomProperties 列出了所有可以发送到延迟模式的属性 - 当安装用户不是管理员,而是使用提升权限进行安装的标准用户时,该模式运行提升。如需对该问题的良好技术概述,请查看:Restricted Public Properties


题外话

现在,强制性题外话:有一段时间我需要能够自己覆盖 SecureCustomProperties 的值,而不是自动生成它基于设置了Secure="yes" 标志的所有属性。

在我的生活中,我现在不记得需要背后的推理细节。也许克里斯或菲尔会记得/知道类似的案例。我认为这与通过 WiX 自动将属性添加到我的 MSI 中有关,但它们没有设置为安全的,我需要使它们安全,以便在延迟模式下可靠地访问它们的值。我不记得它与什么 WiX 功能有关。

【讨论】:

猜你喜欢
  • 2019-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
相关资源
最近更新 更多