【发布时间】:2018-02-26 17:52:30
【问题描述】:
我必须修复的产品的旧 msi 在 Windows Server 2003 Standard 的 180 天试用版上运行,但在完全许可的版本中失败。 msi 是用 wix2 构建的(http://schemas.microsoft.com/wix/2003/01/wi 但已不存在)
当它在许可服务器上失败时,日志报告
CustomActionException: System.NullReferenceException
来自 CustomAction 函数,该函数从注册表中查找 SSRS 服务器路径和原始 SQL 服务器实例名称。
查看 MSI 自定义操作代码,我已验证 MSI 所需的注册表设置和服务器路径确实存在正确的数据。
是否有可能'session'在传递给自定义操作函数的参数中为空?
[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 时无法验证的唯一代码部分。
会话怎么可能是空的?有没有办法检查或防止这种情况?
为什么这在 180 天试用版中有效,而在服务器的许可版本中无效? (我知道这是一个范围......)
【问题讨论】: