Function DetermineWUAVersion ; Hardcoded special case for XP Home/Embedded SP3, because the WUA 7.6.7600.256 setup SFX is ; seriously broken on it, potentially causing an unbootable Windows install due to it entering an ; infinite loop of creating folders in the root of C:. ${If} ${IsWinXP2002} ${AndIf} ${AtLeastServicePack} 3 ${AndIf} ${IsHomeEdition} ${OrIf} ${IsEmbedded} StrCpy $1 "5.1.3-home" ${Else} GetWinVer $1 Major GetWinVer $2 Minor GetWinVer $3 ServicePack StrCpy $1 "$1.$2.$3" ${EndIf} StrCpy $0 "" ClearErrors ReadINIStr $2 $PLUGINSDIR\Patches.ini WUA $1 ${If} ${Errors} Return ${EndIf} ${GetFileVersion} "$SYSDIR\wuapi.dll" $1 ${VersionCompare} $1 $2 $3 ${If} $3 == 2 Call GetArch Pop $0 ReadINIStr $0 $PLUGINSDIR\Patches.ini WUA $2-$0 ${EndIf} FunctionEnd Function DownloadWUA Call DetermineWUAVersion ${If} $0 != "" !insertmacro Download "Windows Update Agent" "$0" "WindowsUpdateAgent.exe" 1 ${EndIf} FunctionEnd Function InstallWUA Call DetermineWUAVersion ${If} $0 != "" Call DownloadWUA !insertmacro Install "Windows Update Agent" "WindowsUpdateAgent.exe" "/quiet /norestart" ${EndIf} FunctionEnd