对于我必须修复的产品来说,一个旧的msi可以在Windows 2003标准的180天试用版上工作,但是在一个完全许可的版本中失败了。msi是用wix2构建的(http://schemas.microsoft.com/wix/2003/01/wi,但它已经不存在了)
当它在授权服务器上失败时,日志报告
CustomActionException: System.NullReferenceException从CustomAction函数中查找SSRS服务器路径和注册表中的原始server实例名称。
查看MSI自定义操作代码,我已经验证了MSI所需的注册表设置和服务器路径确实存在于正确的数据中。
在传递给自定义操作函数的参数中,“会话”是否为空?
[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天试用版中有效,而不是在服务器的授权版本中呢?(我知道这是一种延伸.)
发布于 2018-02-27 20:35:11
MSI只在服务器的x86版本中工作,而不在x64中工作。msi没有警告过这件事。提防不警告的老MSI。
https://stackoverflow.com/questions/48994293
复制相似问题