在Vista系统中出现MSI错误代码2869

4
我有一个在Visual Studio 2005中创建的.NET应用程序的MSI,其中包含一个自定义操作来在安装结束时写入一些注册表键。我发现该安装程序在Windows XP SP2和SP3上运行良好。然而,当我尝试在Vista PC上运行安装程序时,安装程序似乎几乎完成了,但随后失败并回滚,显示错误代码2869。
我使用的是管理员帐户登录,但仍然遇到相同的错误。
6个回答

3
我找到了解决这个问题的确切答案。错误2869是一个无意义的错误,意思是“无法显示真正问题的错误”。真正的错误被隐藏了。在许多情况下,该错误与模拟有关,但并非总是如此!这个解决方案既修复了错误显示错误,也修复了Vista和Windows 7上的模拟/管理员权限问题。唯一缺少的是手把手的指导(对于像我这样不想了解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. 打开部署项目属性。
  4. 更改PostBuildEvent为

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


顺便说一句,这个脚本很有用,可以添加到您的所有VS2005项目中,以防出现其他随机错误。 - Mark Lakata

2

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

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

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

解决此问题的类似快速脏方法可以在此处找到。


1

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

你无法在Visual Studio 2005中设置该位,但这里有一个过程可以让它正常工作。


1
我想到的解决方案是向客户分发一个带有清单配置的EXE,以在安装开始时触发UAC提升,而不是使用MSI(我们的应用程序无论如何都必须进行每台机器的安装)。

0

调用

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

帮助了我。


0

对于许多在Windows 10上的旧应用程序,您需要安装.NET Framework 3.5,因为它不再默认安装。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接