我有一个使用Visual Studio 2005创建的.NET应用程序的MSI,其中包括在安装结束时编写一些注册表项的自定义操作。我发现安装程序在Windows XP SP2和SP3上运行正常。但是,当我尝试在Vista PC上运行安装程序时,安装程序似乎几乎一直到最后,但随后死掉并回滚,给出错误代码2869.
我使用的是管理员帐户登录,但我仍然遇到同样的错误。
答案 0 :(得分:3)
我找到了这个问题的明确答案。错误2869是无意义的错误,意味着“无法显示真实问题的错误”。真正的错误是模糊的。在许多情况下,该错误与模仿有关,但并非总是如此!
此解决方案既修复了错误显示错误,又修复了Vista和Windows 7上的Impersonation / Admin priv问题。
缺少的一件事是手持(对于那些不想了解javascript的人,比如我),让这个工作起作用。
抓取脚本,并将其作为PostBuildVistaFix.js
将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"
帮助了我。