我的安装程序包在我的计算机上运行但在我的同事的计算机上失败了。查看日志,我可以看到在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
设置为1
以使Ignoring disallowed property
消失。另一种解决方案是创建我自己的安全属性,并将我需要的任何被忽略的属性值复制到我自己的属性中,然后读取它们而不是被忽略的属性。
之后我发现他的安装程序日志中有一个条目Machine policy value 'EnableUserControl' is 0
,但在我的日志中没有,似乎将EnableUserControl
设置为1
可能就是我需要的。在这种情况下,问题是为什么这两台机器有不同的值?
所以我的第一个问题是:EnableUserControl
是我的解决方案的一个很好的解决方案,或者可能有更好/更安全的解决方案,因为我似乎只找到症状而不是原因?
或者如果EnableUserControl
看起来像是一个合理的修复信息,任何建议都可以帮助我找出问题的原因(管理员可能会更改注册表项值?)。
我不认为我的安装程序有什么特别之处,但如果有人想看到更多细节:
<Package Id="*" InstallerVersion="200" Description="Web service installer" Compressed="yes" InstallScope="perMachine" />
修改
正如PhilDW所指出的那样,这些属性可能应该首先标记为Secure
。但是,由于UAC,所以不应将所有属性标记为Secure
,如果属性可能被Secure
定义,我认为将其定义为{{1}}是没有意义的。其他
答案 0 :(得分:1)
我很确定你是否定义它们并不重要 - 尝试将它们标记为安全。