Vista上的MSI错误代码2869

时间:2009-01-21 14:50:33

标签: .net windows-vista installer windows-installer

我有一个使用Visual Studio 2005创建的.NET应用程序的MSI,其中包括在安装结束时编写一些注册表项的自定义操作。我发现安装程序在Windows XP SP2和SP3上运行正常。但是,当我尝试在Vista PC上运行安装程序时,安装程​​序似乎几乎一直到最后,但随后死掉并回滚,给出错误代码2869.

我使用的是管理员帐户登录,但我仍然遇到同样的错误。

5 个答案:

答案 0 :(得分:3)

我找到了这个问题的明确答案。错误2869是无意义的错误,意味着“无法显示真实问题的错误”。真正的错误是模糊的。在许多情况下,该错误与模仿有关,但并非总是如此!

此解决方案既修复了错误显示错误,又修复了Vista和Windows 7上的Impersonation / Admin priv问题。

缺少的一件事是手持(对于那些不想了解javascript的人,比如我),让这个工作起作用。

  1. 访问http://blogs.msdn.com/b/nikhiln/archive/2007/04/25/post-build-script-to-fix-msi-issues-in-vista-for-vs-2005-setup-and-deployment-project.aspx

  2. 抓取脚本,并将其作为PostBuildVistaFix.js

  3. 保存到Deployment项目文件夹中
  4. 启动部署项目属性
  5. 将PostBuildEvent更改为

    cscript.exe ..\PostBuildVistaFix.js your_installer.msi

答案 1 :(得分:2)

好的,我找到了解决问题的方法:

如果我以管理员用户身份登录,而不是仅通过双击msi或setup.exe运行我的安装程序,如果我右键单击并选择“以管理员身份运行”,我的程序将成功安装。

看起来这与在机器上启用UAC的事实有关。我在关闭UAC的Vista机器上尝试了它,安装程序在管理员用户正常运行时运行正常。

可以找到类似的快速而肮脏的方法来解决这个问题here

答案 2 :(得分:1)

我提出的解决方案是向客户分发EXE,其中清单配置为在安装开始时触发UAC提升,而不是MSI(我们的应用程序必须按机器安装)

答案 3 :(得分:1)

问题与Vista在自定义操作上强制执行NoImpersonate位有关。这在以前被XP忽略了。

您无法在Visual Studio 2005中设置该位,但here是一个让它运行的过程。

答案 4 :(得分:0)

致电

msiexec /a "path-to-package.msi"

帮助了我。