我想在Wix安装程序中将属性指定为受限属性,位于wix .wxs文件中。
.as-console-wrapper { max-height: 100% !important; top: 0; }
有什么想法吗?
想要 <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>
,PROP1
私人/安全。
尝试将它们设为小写但RegistrySearch不接受它:
错误CNDL0012:Property / @ Id属性的值'Prop1'不能 包含小写字符。
由于这是搜索属性,因此它也必须是公共属性。这意味着Property / @ Id值必须完全为大写。
答案 0 :(得分:0)
我认为您需要为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功能。