Windows Installer(C#)错误代码2869

我在VS 2005中有一个项目,它有一个控制台应用程序和一个与安装应用程序相关的安装项目。 我还在控制台应用程序中有一个安装程序类,安装程序将在安装之前使用它来进行一些validation。 这些任务是检查数据库连接字符串并检查某些目录位置以确保它们在安装之前存在。

我尝试安装应用程序时收到错误代码2869。 所有代码都是用C#编写的。 我在Google XP上搜索了这个错误代码,但只找到了与Vista和Windows 7相关的文章。任何想法可能会发生什么? 有解决方法吗?

这对修复安装程序代码没有帮助,但是如果在Windows 2008 Server上进行安装时发生这种情况,则可能需要从提升的命令提示符运行安装程序:

  1. 使用“以管理员身份运行”打开命令提示符,然后运行安装程序
  2. msiexec / i installer.msi

安装程序错误很难调试,您可以尝试:

  1. 在事件查看器/应用程序中查找已记录的exception
  2. 使用catch子句中的大型try / catch和MessageBox.Show(ex.ToString())来包围代码
  3. 安装时生成日志:msiexec / i“installer.msi”/ lvx“log.txt”并查看其中的线索

要了解发生的情况,可以使用Sysinternals的Process Monitor。 它可以自动检测您的操作系统并且是便携式的,因此您只需执行以下操作:

  • 从https://technet.microsoft.com/sysinternals/processmonitor.aspx下载Process Monitor
  • 启动Process Monitor
  • 设置filter“进程名称为msiexec.com”以监视安装程序
  • 启动安装程序(例如setup.exe)(无需使用特殊命令行开关修改或运行它)
  • 检查监视日志中的错误(文件访问,注册表等)

在我的情况下,Process Monitor在文件提取时向我显示原因“DISK FULL”,导致错误代码2869。

错误2869记录为Windows Installer对话框的对话框问题。 您看到的唯一原因是设置显示错误对话框,并且存在一个小问题。 真正的错误将在日志中更早。 换句话说,它是一个已经失败的安装的无意义的下游错误。 在日志的前面查看实际错误,其中十分之九将是失败的自定义操作。