wix msi 在服务器的许可版本中失败

wix msi fails in licensed version of server

我必须修复的产品的旧 msi 在 Windows Server 2003 Standard 的 180 天试用版上工作,但在相同的完全许可版本上失败。 msi 是用 wix2 构建的(http://schemas.microsoft.com/wix/2003/01/wi 但它不再存在)

当它在许可服务器上失败时,日志报告

CustomActionException: System.NullReferenceException

来自从注册表中查找 SSRS 服务器路径和原始 SQL 服务器实例名称的 CustomAction 函数。

查看 MSI 自定义操作代码,我已验证 MSI 所需的注册表设置和服务器路径确实存在且数据正确。

是否有可能 'session' 在传递给自定义操作函数的参数中为 null?

[CustomAction]
public static ActionResult FindSSRSPath (Session session)
{
    View ComboBoxView = session.Database.OpenView("select * from ListBox");
    View AvailableInstacesView = session.Database.OpenView("select * from AvailableInstances");
    ... etc

会话成员的使用是我在 运行 msi 时无法验证的唯一代码部分。

session怎么会是null呢?无论如何要检查或防止它?

为什么这在 180 天试用版中有效,而在服务器的许可版本中无效? (我知道这是一个范围...)

MSI 仅适用于 x86 版本的服务器,不适用于 x64。 msi 没有对此发出警告。小心没有警告的旧 MSI。