我们有一个 MSI 可以在客户端机器上安装 windows 服务。Windows 服务调用我们服务器的 Web 服务来执行操作。最初,MSI 和 Web 服务都是使用 .NET 2.0 框架构建的。
上个季度,我们将系统升级到 .NET 4.0。虽然我们的 Web 服务仍然是 ASP.NET,即 asmx(而不是 WCF)。此外,我确实将框架 4.0 设置为安装 MSI 的先决条件。
我们的一位客户报告了这个问题:
客户使用 .NET 框架 2.0,并在他的系统中安装了旧版本的 MSI。当他尝试安装.NET framework 4.0版本的微星时,被提示安装framework 4.0(因为有先决条件)。框架安装完成后,他尝试安装 MSI 并收到此错误。有人可以指导我解决问题。如果需要,我可以提供详细信息。
编辑1:
经过更多研究,我发现它是我的 AppName.installstate 文件。卸载会删除此文件,但升级不会这样做。该文件位于安装目录中。仔细一看,我可以在文件内容中看到“ http://schemas.xmlsoap.org/soap/envelope/:Envelope ”。任何指针将不胜感激。
编辑2:
自定义操作 Install 创建 AppName.installstate 文件,自定义操作 Uninstall 删除该文件。就我而言,我正在进行 MSI 升级,但对这个文件没有任何作用。当我比较 2.0 和 4.0 的 installstate 文件(都是手动安装的)时,我可以看到 XML 语法、模式和内容的巨大差异,原因是我收到了序列化错误。现在我需要知道为什么 AppName.installstate 在升级时没有被覆盖。做了很多谷歌,但无处可去。查看了 MSI 安装日志,但没有有用的信息。