0

我想在我的 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吗?

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

谢谢,

4

1 回答 1

1

好吧,我不太确定如何检查是否vcredist已从注册表安装。我为我的安装程序所做的是,检查系统中vcredist安装(以及我正在安装vcredist)的特定 dll 文件。因此,如果该文件存在于我的 $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:
于 2013-07-26T08:53:32.560 回答