以静默方式安装VC ++ Redist 2008

时间:2013-07-26 05:32:12

标签: nsis msvcrt

我想在我的NSIS安装脚本中安装VC ++ Redist 2008。我得到了以下一段脚本:

; Test if Visual Studio Redistributables 2005+ SP1 installed
; Returns -1 if there is no VC redistributables intstalled
Function CheckVCRedist
   Push $R0
   ClearErrors
   ReadRegDword $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{7299052b-02a4-4627-81f2-1818da5d550d}" "Version"

   ; if VS 2005+ redist SP1 not installed, install it
   IfErrors 0 VSRedistInstalled
   StrCpy $R0 "-1"

VSRedistInstalled:
   Exch $R0
FunctionEnd

基本上它适用于VC ++ Redist 2005,但我编辑了reg设置来检查2008的存在(这样做是否可以?)。我需要一段脚本/命令来安装VC ++ Redist 2008。

  • 我在哪里存储VC设置以及如何以静默模式执行。
  • 可以查看.onInit吗?

有人可以提供一个完整的脚本来检查是否存在以及如何以静默模式执行它。

谢谢,

1 个答案:

答案 0 :(得分:0)

嗯,我不太清楚如何检查是否已从注册表中安装vcredist。 我为安装程序执行的操作是检查系统中vcredist安装的{d}文件(以及我正在安装的vcredist)。因此,如果我的$ WinDir中存在该文件,我认为已经安装了vcredist,否则我下载&安装(静默)vcredist

以下是我的脚本,可能对您有所帮助:

ifFileExists $Windir\System32\mfc100.dll +2 0
StrCpy $IsMfcInstalled "no"
${If} $IsMfcInstalled == "no"    
download1:
NSISdl::download "http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe"  "$Temp/vcredist_x86.exe"
pop $0
StrCmp "$0" "success" execStep1 instAbort1
execStep1:
Execwait '"$Temp/vcredist_x86.exe" /q' ; '/q' to install silently
pop $0
StrCmp "$0" "success" done execStep1
instAbort1:
StrCmp $0 "cancel" 0 +1
MessageBox MB_OKCANCEL "Connection Timed Out. Retry ? " IDOK  download1 IDCANCEL 0
Quit
${else}
goto done
${endIf}
done: