wix更改非安全属性以保护修补程序MSP中的属性

时间:2015-11-24 14:50:21

标签: wix windows-installer

我发现一个属性没有设置为"安全"在RTM中。所以我改变了它,比如,

<Property Id="MY_PASSWORD" Hidden="yes" />

<Property Id="MY_PASSWORD" Secure="yes" Hidden="yes" />

然后将其添加到Patch.wxs,例如

<PropertyRef Id="MY_PASSWORD" />

但是,当我在启用日志记录的情况下运行修复时,MY_PASSWORD不在SecureCustomProperties中列出。

我想知道是否有可能在补丁中更改它,如果是,如何?

1 个答案:

答案 0 :(得分:1)

可以创建一个可以更改MSI表值的补丁,例如属性值,但是可以根据您的说法显示您实际上没有创建真正的补丁并应用它。看起来好像你只是重建了MSI,然后右键单击并使用了Repair并将其称为补丁。除了修复已安装的MSI产品外,这没有任何作用。它会看到您右键单击的MSI已经安装(就像您右键单击原始MSI一样)并修复现有的已安装产品。新MSI的任何内容都不会添加到系统中。

补丁进程创建一个实际补丁,一个.msp文件,作为两个MSI文件,数据和MSI表内容之间的差值。使用MSI SDK,它使用.pcp文件和msimsp.exe完成。您可以查看这些有关使用WiX创建补丁的信息:

http://trentm.com/2007/05/building-msi-patch-packages-msp-with-wix.html

http://wixtoolset.org/documentation/manual/v3/patching/wix_patching.html

解决问题的最简单方法是使用MajorUpgrade元素,并使用具有更高ProductVersion,相同UpgradeCode和新ProductCode的新MSI升级整个旧产品。