Answers:
我遇到了这种情况,以前使用“系统管理员已设置了阻止此安装的策略”来阻止MSI安装。我认为这是由于默认的Windows软件限制策略引起的,并且我在Windows Server 2008 R2和Windows Server 2012上均已看到它。
可能有更好的基于GUI的方式来更改策略,但是在计算机上将以下reg键设置为admin可以解决问题:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer]
"DisableMSI"=dword:00000000
这通常是由于组策略或本地策略禁用Windows Installer所致。
如果您有GPO禁用“ Windows Installer”,请查看域控制器:“计算机配置”>“管理模板”>“ Windows组件”>“ Windows Installer”>“关闭Windows Installer”。
确认将其设置为“未配置”或“禁用”。
如果在GPO中找不到它,请使用gpedit.msc查看计算机的本地策略。
注意:您是域管理员这一事实并不重要。这完全取决于GPO的范围。
Verify that it is set to "Not configured" or "Disabled".
这不是真的。默认(未配置)是1
该装置managed only
。msdn.microsoft.com/zh-cn/library/aa368304.aspx就gpos而言,禁用表示该策略将被禁用,因此将删除reg密钥,并使用默认值。声音很奇怪,但是您必须在下拉框中选择Enabled
并选择Never
。
使用来构建MSI时,我们遇到了完全相同的问题IsCmdBld.exe
,但是从InstallShield软件用户界面进行构建时,我们没有同样的问题。
运行安装程序时,我们将看到OP提及的错误,并且安装日志将显示: MSI_LUA: Invalid Descriptor Format.
问题的原因是,我们将ProductCode Guid值传递给IsCmdBld.exe命令行,如下所示:-z "ProductCode"="f176c219-dec0-4fa9-a373-94a711f28a3d"
。
您会看到此处提供的Guid并没有被{
和包围}
。
我们通过将guid放在方括号内来解决此问题:-z "ProductCode"="{f176c219-dec0-4fa9-a373-94a711f28a3d}"
它可以按预期工作,并且不再显示错误。