Silverlight wird auch unter den superseded Updates geführt. Damit konnten bis auf drei Links alle herausgefiltert werden. Die letzten könnten mittels statische Definition oder folgendem Code eliminiert werden:
.\Silverlight_test.cmd
- Code: Select all
@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
cscript.exe //Nologo //E:vbs .\cmd\XSLT.vbs ".\package.xml" .\xslt\silverlight_x86.xsl ".\tmp\Silverlight-x86_all.txt"
cscript.exe //Nologo //E:vbs .\cmd\XSLT.vbs ".\package.xml" .\xslt\silverlight_x64.xsl ".\tmp\Silverlight-x64_all.txt"
%SystemRoot%\System32\findstr.exe /L /I /V /G:".\ExcludeList-superseded.txt" ".\tmp\Silverlight-x86_all.txt" >".\tmp\Silverlight-x86_nos.txt"
%SystemRoot%\System32\findstr.exe /L /I /V /G:".\ExcludeList-superseded.txt" ".\tmp\Silverlight-x64_all.txt" >".\tmp\Silverlight-x64_nos.txt"
del ".\tmp\Silverlight-x86_all.txt"
del ".\tmp\Silverlight-x64_all.txt"
for /f "delims=" %%f in (.\tmp\Silverlight-x86_nos.txt) do (
cscript //Nologo //E:vbs .\cmd\GetDateFromURL.vbs %%f >>.\tmp\Silverlight-x86_withdate.txt
)
for /f "delims=" %%f in (.\tmp\Silverlight-x64_nos.txt) do (
cscript //Nologo //E:vbs .\cmd\GetDateFromURL.vbs %%f >>.\tmp\Silverlight-x64_withdate.txt
)
del ".\tmp\Silverlight-x86_nos.txt"
del ".\tmp\Silverlight-x64_nos.txt"
set olddate=0
set mostrecentlink=
for /f "tokens=1,2 delims=;" %%a in (.\tmp\Silverlight-x86_withdate.txt) do (
if !olddate! LSS %%b (
set olddate=%%b
set mostrecentlink=%%a
)
)
echo %mostrecentlink%>.\Silverlight-x86.txt
set olddate=0
set mostrecentlink=
for /f "tokens=1,2 delims=;" %%a in (.\tmp\Silverlight-x64_withdate.txt) do (
if !olddate! LSS %%b (
set olddate=%%b
set mostrecentlink=%%a
)
)
echo %mostrecentlink%>.\Silverlight-x64.txt
del ".\tmp\Silverlight-x86_withdate.txt"
del ".\tmp\Silverlight-x64_withdate.txt"
endlocal
.\cmd\GetDateFromURL.vbs
- Code: Select all
Option Explicit
Dim strInput, arrInput
If WScript.Arguments.Count < 1 Then
WScript.Echo("ERROR: Missing argument.")
WScript.Echo("Usage: " & WScript.ScriptName & " <URL>")
WScript.Quit(1)
End If
strInput = WScript.Arguments(0)
If strInput = "" Then
WScript.Quit(1)
End If
If InStr(strInput, "/") = 0 Or InStr(strInput, "http") <> 1 Then
WScript.Quit(1)
End If
arrInput = Split(strInput, "/", -1, vbTextCompare)
WScript.Echo(strInput & ";" & arrInput(UBound(arrInput) - 2) & arrInput(UBound(arrInput) - 1))
WScript.Quit(0)
.\cmd\XSLT.vbs
<aus wsusou>
.\xslt\Silverlight_x64.xsl
- Code: Select all
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="*">
<xsl:choose>
<xsl:when test="name()='FileLocation'">
<xsl:if test="contains(@Url, '/silverlight') and contains(@Url, '_x64') and not(contains(@Url, '_sdk') or contains(@Url, '_developer')) and contains(@Url, '.exe')">
<xsl:value-of select="@Url"/>
<xsl:text> </xsl:text>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="*"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:transform>
.\xslt\Silverlight_x86.xsl
- Code: Select all
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="*">
<xsl:choose>
<xsl:when test="name()='FileLocation'">
<xsl:if test="contains(@Url, '/silverlight') and not(contains(@Url, '_x64') or contains(@Url, '_sdk') or contains(@Url, '_developer')) and contains(@Url, '.exe')">
<xsl:value-of select="@Url"/>
<xsl:text> </xsl:text>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="*"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:transform>
Die package.xml ist die aus der wsusscn2.cab und die ExcludeList-superseded.txt ist die ExcludeList von wsusou.
Das Resultat sieht so aus:
- Code: Select all
http://download.windowsupdate.com/c/msdownload/update/software/secu/2015/05/silverlight_x64_2f3040e5f7028c2d42cff848f361c06f3d237376.exe
- Code: Select all
http://download.windowsupdate.com/c/msdownload/update/software/secu/2015/05/silverlight_5e77fd1cd6ebcc223b0ba9d6aab9e8f2c3093937.exe
Dies ist nur ein auf die Schnelle zusammengecodeter Ansatz, der aus dem Link
http://download.windowsupdate.com/c/msdownload/update/software/secu/2015/05/silverlight_5e77fd1cd6ebcc223b0ba9d6aab9e8f2c3093937.exe
das Jahr und den Monat herausextrahiert und daraus den neusten Link ermittelt. Ich bin mir nicht sicher, ob dieser Code optimal arbeitet, aber er liefert das Resultat, was er liefern soll.
Viele Grüße
Wer Rechtschreibfehler findet, darf sie behalten oder an den Meistbietenden versteigern. / Everybody finding a misspelling is allowed to keep or sell it.
aker
WSUS Offline Update „Community Edition“
https://gitlab.com/wsusoffline/wsusoffline/-/releases