Wix 忽略不允许的属性IIS主版本和';启用用户控制';?

Wix 忽略不允许的属性IIS主版本和';启用用户控制';?,wix,windows-installer,Wix,Windows Installer,我的安装程序包在我的机器上运行,但在我同事的机器上失败。查看日志,我可以看到一些属性值在执行阶段没有持久化:在他的安装程序日志文件中有几行忽略不允许的属性,并且这些属性在UISequence期间设置了正确的值。奇怪的是,我们都是本地机器上的管理员用户,他是,而我不是,我们都是64位Windows 7上的域管理员。所以我不认为这是因为他没有管理员权限 日志文件中的确切条目: MSI (s) (3C:50) [09:14:16:583]: Ignoring disallowed property I

我的安装程序包在我的机器上运行,但在我同事的机器上失败。查看日志,我可以看到一些属性值在执行阶段没有持久化:在他的安装程序日志文件中有几行
忽略不允许的属性
,并且这些属性在UISequence期间设置了正确的值。奇怪的是,我们都是本地机器上的管理员用户,他是,而我不是,我们都是64位Windows 7上的域管理员。所以我不认为这是因为他没有管理员权限

日志文件中的确切条目:

MSI (s) (3C:50) [09:14:16:583]: Ignoring disallowed property IISMAJORVERSION
MSI (s) (3C:50) [09:14:16:583]: Ignoring disallowed property IISMINORVERSION
MSI (s) (3C:50) [09:14:16:583]: Ignoring disallowed property WCF_SRV_INSTALL_FOLDER
MSI (s) (3C:50) [09:14:16:583]: Ignoring disallowed property TARGETDIR
一个简单的解决方法是将所有这些属性标记为
安全
,但是像
IISMAJORVERSION
这样的属性没有在我的代码中定义。我发现我可以将
EnableUserControl
设置为
1
以使
忽略不允许的属性
消失。另一个解决方案是创建我自己的安全属性,将我需要的任何被忽略的属性值复制到我自己的属性中,并读取它们,而不是被忽略的属性

之后,我发现在他的安装程序日志中有一个
机器策略值'EnableUserControl'为0
,但在我的日志中没有,这似乎指向将
EnableUserControl
设置为
1
可能就是我需要的。在这种情况下,问题是为什么这两台机器的值不同

因此,我的第一个问题是:set
EnableUserControl
是我的解决方案的好办法,还是有更好/更安全的解决方案,因为我似乎只发现了症状,而没有发现原因

或者,如果
EnableUserControl
看起来是一个合理的解决方案,那么任何建议都可以帮助我找到问题的原因(可能是管理员更改了注册表项值?)

我认为我的安装程序没有什么特别之处,但如果有人想查看更多详细信息:

<Package Id="*"  InstallerVersion="200" Description="Web service installer" Compressed="yes" InstallScope="perMachine" />

编辑:


正如PhilDW所指出的,这些属性可能应该首先标记为
Secure
。但是,难道不是所有的属性都应该被标记为
安全的
吗?因为UAC,我认为如果一个属性可能被其他人使用,那么将其定义为不
安全的
就没有多大意义了?

我很确定,你是否定义了它们并不重要-试着将它们标记为安全的

例如,如果我放置
iismajorvision
属性并确保其安全,我会找到“Duplicate symbol”属性:iismajorvision”。这通常意味着Id是重复的。请检查以确保给定类型(文件、组件、功能)的所有标识符都是唯一的。“。好的方面是查看IISExtension.wxs的源代码,我现在知道
MAJORVRESION
的值是从哪里读取的,通过它的外观,我可以定义自己的ResgistrySearch来获取值。但是在其他人的机器上进行测试有点困难。直接进入MSI文件并将这些属性名称添加到属性表中的SecureCustomProperties列表中,看看是否解决了问题,可能会很有用。很明显,您无法重新定义这些属性,但如果它们是在扩展文件中定义的,我会尝试进入其中并将它们标记为安全的。wxs文件可能是UAC之前的文件,如果它们不工作,则需要修复以使其安全!谢谢,应该行了。我不知道为什么一开始它没有被定义为
Secure
,但正如您所指出的,它可能回到了没有UAC的时代。但如果将每个属性定义为
Secure
,则与设置
EnableUserControl
似乎没有太大区别。我目前使用的是
EnableUserControl
解决方案,因为它对我来说更容易,而不需要担心我需要修补哪个属性才能使其
安全
,因此它在某些特定情况下不会失败。再说一次,除非使用该功能有副作用。您的计算机必须具有该设置(适用于所有MSI,而不仅仅是一个),并且您的同事必须禁用该策略。他可能在域控制器上吗?我现在看到通过msiexec.exe命令行从非提升的命令提示符设置的属性存在一些问题。UAC提示符出现,但属性设置未传递到msiexec.exe会话(除非在包中属性标记为安全)错误或功能?不知道是哪个。