在wix生成的msi包中,如何阻止用户通过命令行覆盖属性?
我知道属性可以通过标记PUBLIC
或private
来确定范围。但是,当我使用私有属性作为启动条件时,我的安装程序在ExecuteSequennce
。
<Condition Message="!(loc.LCMsg)">private = "true" OR Installed</Condition>
我在自定义操作中设置属性,该操作计划在UISequence中运行。我希望这个属性是私有的,因此用户不能只在命令行上分配值true
,因此跳过检查这个条件应该实际实现的。
我现在已经使用了一个公共属性,并且在调用我自己的CA之前使用了一个type51 CA将其值设置为false。如果用户要在命令行上设置该值,它将被类型51 CA覆盖:
<CustomAction Id="Type51Init" Property="PUBLIC" Value="false" />
<InstallUISequence>
<Custom Action="Type51Init" Before="MyCA">NOT Installed</Custom>
</InstallUISequence>
这看起来相当hacky,我真的想知道是否有另一种方法阻止用户通过命令行设置属性。