分发 VC++ Redist... 在已安装时运行安装程序会导致问题
Posted
技术标签:
【中文标题】分发 VC++ Redist... 在已安装时运行安装程序会导致问题【英文标题】:Distributing VC++ Redist... running installer when already installed causes problems 【发布时间】:2010-03-17 11:39:28 【问题描述】:使用 Inno 安装程序,我们将 VC++ redistributable 与我们的应用程序一起分发,以便我们可以自动运行它。我们发现在已经安装了它的系统上运行它会要求我们修复/撤消安装,这会让用户完全感到困惑。
有没有办法解决这个问题?也许安装程序上的标志或其他东西?
谢谢。
【问题讨论】:
【参考方案1】:试试 /q 标志 http://support.microsoft.com/kb/227091(假设您是通过调用 msiexec.exe 对其可再发行组件进行安装)
【讨论】:
我们正在从这里安装 vcredist_x86.exe:microsoft.com/downloads/…。你的答案还适用吗? 如果 /q 不行,试试 /Q:a /c:"msiexec.exe /qb /i vcredist.msi" 见jrsoftware.innosetup.free-usenet.eu/…【参考方案2】:由于某种原因,上述答案都不适合我。但是确实如此:
[Run]
Filename: tmp\vcredist_x86.exe; Parameters: "/passive /Q:a /c:""msiexec /qb /i vcredist.msi"" "; StatusMsg: Installing 2010 RunTime...
[Files]
Source: vendor/vcredist_x86.exe; DestDir: tmp
我通过运行 vcredist_x86.exe /? 得到了提示,如该线程底部所述:http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/a8d4d5b4-7927-4c86-95e8-3cd8b3018ae8/
进一步说明,重新分发的另一个可能选项是静态链接到(您的版本)msvcrt 请参阅http://blogs.msdn.com/b/vcblog/archive/2007/10/12/how-to-redistribute-the-visual-c-libraries-with-your-application.aspx 中的 cmets(尽管 MS 显然不赞成这种类型的静态链接,至少您不会需要一个dll)。
Distributing the Visual C++ Runtime Libraries (MSVCRT) 也可能有用。
另外请注意,如果您可以保证您可以控制,您可以将 msvcr100.dll 包含在与您的可执行文件相同的目录中,这也可以,尽管不是一个非常标准的解决方案。
【讨论】:
仅仅使用vcredist_x86.exe /q /norestart
不够吗? (那是 /quiet /norestart
对于 VS2012 顺便说一句)【参考方案3】:
This thread 解决了我的问题:
(取自另一个答案中的评论)
【讨论】:
【参考方案4】:虽然不适用于 Inno 安装程序,但此相关问题为 Visual Studio 2010 安装项目提供了解决方案。问题是由于vcredist的SP1更改了产品代码,而Visual Studio使用的是旧代码。这就是已安装检查失败的原因。
Visual C++ 2010 Runtime Libraries prerequisite keeps popping up on a VS 2010 created installer
【讨论】:
以上是关于分发 VC++ Redist... 在已安装时运行安装程序会导致问题的主要内容,如果未能解决你的问题,请参考以下文章
安装LoadRunner时提示缺少vc2005_sp1_with_atl_fix_redist解决方案