feat: add vcruntime for windows installer (#5852)

This commit is contained in:
Nguyen Ngoc Minh 2025-07-21 22:38:00 -07:00 committed by GitHub
parent 25952f293c
commit fceecffed7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -58,6 +58,8 @@ ${StrLoc}
!define UNINSTALLERSIGNCOMMAND "$\"powershell$\" $\"-ExecutionPolicy$\" $\"Bypass$\" $\"-File$\" $\"./sign.ps1$\" $\"%1$\""
!define ESTIMATEDSIZE "793795"
!define STARTMENUFOLDER ""
!define VCREDIST_URL "https://aka.ms/vs/17/release/vc_redist.x64.exe"
!define VCREDIST_FILENAME "vc_redist.x64.exe"
Var PassiveMode
Var UpdateMode
@ -615,6 +617,63 @@ Section WebView2
${EndIf}
SectionEnd
Section VCRedist
; Check if VC++ Redistributable is already installed
; Check for Visual Studio 2015-2022 redistributable (14.0 or higher)
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" "Version"
${If} $0 == ""
; Try alternative registry location
ReadRegStr $0 HKLM "SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" "Version"
${EndIf}
${If} $0 == ""
; Try checking for any version of Visual C++ 2015-2022 Redistributable
ReadRegStr $0 HKLM "SOFTWARE\Classes\Installer\Dependencies\Microsoft.VS.VC_RuntimeMinimumVSU_amd64,v14" "Version"
${EndIf}
${If} $0 == ""
; VC++ Redistributable not found, need to install
DetailPrint "Visual C++ Redistributable not found, downloading and installing..."
; Download VC++ Redistributable
Delete "$TEMP\${VCREDIST_FILENAME}"
DetailPrint "Downloading Visual C++ Redistributable..."
NSISdl::download "${VCREDIST_URL}" "$TEMP\${VCREDIST_FILENAME}"
Pop $1
${If} $1 == "success"
DetailPrint "Visual C++ Redistributable download successful"
; Install VC++ Redistributable silently
DetailPrint "Installing Visual C++ Redistributable..."
ExecWait '"$TEMP\${VCREDIST_FILENAME}" /quiet /norestart' $2
${If} $2 == 0
DetailPrint "Visual C++ Redistributable installed successfully"
${ElseIf} $2 == 1638
DetailPrint "Visual C++ Redistributable already installed (newer version)"
${ElseIf} $2 == 3010
DetailPrint "Visual C++ Redistributable installed successfully (restart required)"
; You might want to handle restart requirement here
${Else}
DetailPrint "Visual C++ Redistributable installation failed with exit code: $2"
MessageBox MB_ICONEXCLAMATION|MB_YESNO "Visual C++ Redistributable installation failed. Continue anyway?" IDYES continue_install
Abort "Installation cancelled due to Visual C++ Redistributable failure"
continue_install:
${EndIf}
; Clean up downloaded file
Delete "$TEMP\${VCREDIST_FILENAME}"
${Else}
DetailPrint "Failed to download Visual C++ Redistributable: $1"
MessageBox MB_ICONEXCLAMATION|MB_YESNO "Failed to download Visual C++ Redistributable. Continue anyway?" IDYES continue_install_download_fail
Abort "Installation cancelled due to download failure"
continue_install_download_fail:
${EndIf}
${Else}
DetailPrint "Visual C++ Redistributable already installed (version: $0)"
${EndIf}
SectionEnd
Section Install
SetDetailsPrint none
SetOutPath $INSTDIR