我的安装程序包在我的计算机上运行,但在我同事的计算机上失败。查看日志,我可以看到一些属性值在 ExecuteAction 短语期间没有保留:有几个Ignoring disallowed property
安装程序日志文件中的行以及这些属性在 UISequence 期间设置为正确的值。奇怪的是,我们都是本地计算机上的管理员用户(他是),也是域管理员,而我不是,而且我们都使用 Windows 7 64 位。所以我不认为这是因为他没有管理员权限。
日志文件中的确切条目:
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
一个简单的修复方法是将所有这些属性标记为Secure
,但是诸如IISMAJORVERSION
我的代码中没有定义。我发现我可以设置EnableUserControl
to 1
使Ignoring disallowed property
离开。另一个解决方案是创建我自己的安全属性,并将我需要的任何被忽略的属性值复制到我自己的属性中,并读取它们而不是被忽略的属性。
之后我发现有一个条目Machine policy value 'EnableUserControl' is 0
在他的安装程序日志中,但不在我的日志中,这似乎需要设置EnableUserControl
to 1
可能是我需要的。在这种情况下,问题是为什么这两台机器的值不同?
所以我的第一个问题是:已设置EnableUserControl
一个很好的解决方案,或者可能有更好/更安全的解决方案,因为我似乎只找到了症状,但没有找到原因?
Or if EnableUserControl
考虑到信息,这似乎是一个合理的修复,任何建议都可以帮助我找出问题的原因(管理员可能更改注册表项值?)。
我不认为我的安装程序有什么特别之处,但如果有人想查看更多详细信息:
<Package Id="*" InstallerVersion="200" Description="Web service installer" Compressed="yes" InstallScope="perMachine" />
Edit:
正如 PhilDW 所指出的,这些属性可能应该标记为Secure
首先。但不应该所有属性都标记为Secure
因为 UAC,我认为定义一个属性不是有多大意义Secure
是否可以被其他人使用?