如何在Wix的.wxs文件中配置SecureCustomProperties及受限属性PROP1、PROP2
在Wix .wxs文件中配置安全受限属性(SecureCustomProperties)的正确方式
我来帮你搞定这个Wix的安全属性配置问题,其实操作起来很直接,咱们把步骤拆解清楚:
1. 保留你的注册表搜索属性定义
你已经写好的通过注册表搜索获取PROP1和PROP2的代码完全可以保留,这部分是正确的:
<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>
2. 在Product元素中添加SecureCustomProperties配置
要把这两个属性标记为安全受限,你需要在<Product>标签内直接添加<SecureCustomProperties>元素,将PROP1和PROP2用分号分隔作为它的内容。这样就能确保这些属性不会被外部恶意篡改,只能在安装包内部安全传递。
完整的配置示例大概是这样:
<Product Id="*" Name="YourProductName" Language="1033" Version="1.0.0.0" Manufacturer="YourCompany" UpgradeCode="PUT-YOUR-GUID-HERE"> <!-- 其他Product内的基础配置,比如Package、Media等 --> <!-- 你的注册表搜索属性定义 --> <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> <!-- 关键:标记属性为安全受限 --> <SecureCustomProperties>PROP1;PROP2</SecureCustomProperties> <!-- 其他组件、Feature等业务配置 --> </Product>
几个需要注意的细节
<SecureCustomProperties>必须是<Product>的直接子元素,放到其他位置(比如Property元素内部)不会生效。- 如果之后需要添加更多安全属性,直接在分号后追加即可,比如
PROP1;PROP2;PROP3。 - 注册表搜索的
Type="raw"会返回值的原始格式,如果你目标是字符串类型,也可以换成Type="string",根据实际需求调整。
这样配置完成后,PROP1和PROP2就会被标记为Windows Installer的安全受限属性,完全符合你的需求啦。
内容的提问来源于stack exchange,提问作者user3664223
相关产品推荐
相关产品推荐

