问题描述
当我尝试安装我的msi软件包时,仅在Vista和7中出现错误.错误1920.服务...(...)无法启动.请验证您是否具有足够的特权来启动系统服务"
When I try to install my msi package I get an error only in Vista and 7. "Error 1920. Service ... (...) failed to start. Verify that you have sufficent privileges to start system services"
如果我使用C ++ 9 CRT Winsxs MSM合并模块构建安装程序,则在Vista或7中会出现此错误
I get this error in Vista or 7 if I build my setup with C++ 9 CRT Winsxs MSM merge module
如果我使用C和C ++ 7运行时库,则不会出现此问题,但是我必须使用旧版本的MS Visual Studio来构建我的exe.
If I use C and C++ 7 runtime libraries it doesn't have this problem, but I must build my exe with old versions of MS Visual Studio.
有人知道我该如何应对吗?
Does anyone have idea how can I cope with that?
推荐答案
作为一般的经验法则,您不应该依赖要在安装程序中安装的文件.例如,如果客户端计算机上的文件使用中的问题需要重新引导才能放置新文件怎么办?或者,如果您需要的某些组件还需要注册配置数据,直到重新启动或登录/注销之后,该配置数据才会发生?安装程序的后续操作将错误地使用意外的环境.
As a general rule of thumb, you shouldn't depend on files you're installing within your installer. For example, what if a file-in-use problem on the client machine required a reboot for the new file to be placed? Or what if some component you need also requires configuration data to be registered, which won't happen until a reboot or logon/logoff? Subsequent operations of your installer would erroneously be using an unexpected environment.
出于安全原因,代码页共享等原因,我对静态链接有强烈的看法,但是在特殊的安装程序中,我建议您静态链接CRT,以确保在安装过程中可以使用它.
I have strong opinions against static linking for security reasons, codepage sharing, etc, but in the special case of installers, I'd recommend that you do statically link the CRT, so that it's guaranteed to be available during the install.
这篇关于如何处理有关Vista和7中winsxs合并模块的安装错误1920?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!