我有一个在Visual Studio 2005中创建的.NET应用程序的MSI,其中包含一个自定义操作来在安装结束时写入一些注册表键。我发现该安装程序在Windows XP SP2和SP3上运行良好。然而,当我尝试在Vista PC上运行安装程序时,安装程序似乎几乎完成了,但随后失败并回滚,显示错误代码2869。
我使用的是管理员帐户登录,但仍然遇到相同的错误。
我使用的是管理员帐户登录,但仍然遇到相同的错误。
获取脚本,将其保存到您的部署项目文件夹中,并命名为PostBuildVistaFix.js。
更改PostBuildEvent为
cscript.exe ..\PostBuildVistaFix.js your_installer.msi
好的,我找到了解决我的问题的方法:
如果我以管理员用户身份登录,并且不仅仅是通过双击msi或setup.exe运行我的安装程序,而是右键单击并选择“以管理员身份运行”,那么我的程序将成功安装。
看起来这与机器上启用了UAC有关。 我在UAC关闭的Vista机器上尝试过,当管理员用户正常运行时,安装程序完全正常。
解决此问题的类似快速脏方法可以在此处找到。
这个问题与Vista在自定义操作上强制执行NoImpersonate位有关。而XP以前会忽略它。
你无法在Visual Studio 2005中设置该位,但这里有一个过程可以让它正常工作。
调用
msiexec /a "path-to-package.msi"
帮助了我。
对于许多在Windows 10上的旧应用程序,您需要安装.NET Framework 3.5,因为它不再默认安装。