Page 2 of 2

Re: .NET Framework 4.7

PostPosted: 17.05.2017, 19:50
by aker
Die neuen Static-Links (dotnet; sowie KB4019990 in die statics für w61/w62).

UpdateInstaller.au3
Code: Select all
Dim Const $path_rel_instdotnet46      = "\dotnet\NDP46*.exe"
+Dim Const $path_rel_instdotnet47      = "\dotnet\NDP47*.exe"

...

Func DotNet4TargetVersion()
  If ( (@OSVersion = "WIN_VISTA") OR (@OSVersion = "WIN_2008") ) Then
    Return "4.6.000"
  Else
-    Return "4.6.015"
+    Return "4.7.020"
  EndIf
EndFunc

Func DotNet4DisplayVersion()
  If ( (@OSVersion = "WIN_VISTA") OR (@OSVersion = "WIN_2008") ) Then
    Return "4.6"
  Else
-    Return "4.6.2"
+    Return "4.7"
  EndIf
EndFunc

...

Func DotNet4InstPresent($basepath)
-  Return $path_rel_instdotnet46
+  If ( (@OSVersion = "WIN_VISTA") OR (@OSVersion = "WIN_2008") ) Then
+    Return $path_rel_instdotnet46
+  Else
+    Return $path_rel_instdotnet47
+  EndIf
EndFunc

...


-  OR ( (DotNet4MainVersion() <> "4.5") AND (DotNet4MainVersion() <> "4.6") AND (NOT IsCheckBoxChecked($dotnet4)) ) _
+  OR ( (DotNet4MainVersion() <> "4.5") AND (DotNet4MainVersion() <> "4.6") AND (DotNet4MainVersion() <> "4.7") AND (NOT IsCheckBoxChecked($dotnet4)) ) _
  OR (WMFMainVersion() = WMFTargetVersion()) ) Then

...

    Case $dotnet4              ; .NET 4 check box toggled
-      If ( ( (IsCheckBoxChecked($dotnet4)) OR (DotNet4MainVersion() = "4.5") OR (DotNet4MainVersion() = "4.6") ) _
+      If ( ( (IsCheckBoxChecked($dotnet4)) OR (DotNet4MainVersion() = "4.5") OR (DotNet4MainVersion() = "4.6") OR (DotNet4MainVersion() = "4.7") ) _


SetTargetEnvVars.cmd
Code: Select all
set DOTNET4_VER_TARGET_MAJOR=4
-set DOTNET4_VER_TARGET_MINOR=6
-set DOTNET4_VER_TARGET_BUILD=01500
set DOTNET4_VER_TARGET_REVIS=0

...

:Windows6.0
...
+set DOTNET4_VER_TARGET_MINOR=6
set DOTNET4_VER_TARGET_BUILD=00081

...

:Windows 6.1
...
+set DOTNET4_VER_TARGET_MINOR=7
+set DOTNET4_VER_TARGET_BUILD=02053
+set DOTNET4_PREREQ_ID=4019990
set WOU_ENDLESS=9

...

:Windows6.2
...
+set DOTNET4_VER_TARGET_MINOR=7
+set DOTNET4_VER_TARGET_BUILD=02053
+set DOTNET4_PREREQ_ID=4019990
set WOU_ENDLESS=6

...

:Windows6.3
...
+set DOTNET4_VER_TARGET_MINOR=7
+set DOTNET4_VER_TARGET_BUILD=02053
set WOU_ENDLESS=6

...

:Windows10.0
...
+set DOTNET4_VER_TARGET_MINOR=7
+set DOTNET4_VER_TARGET_BUILD=02053
set WOU_ENDLESS=3


DoUpdate.cmd
Code: Select all
rem *** Install .NET Framework 4 ***
if "%INSTALL_DOTNET4%" NEQ "/instdotnet4" goto SkipDotNet4Inst
echo Checking .NET Framework 4 installation state...
if %DOTNET4_VER_MAJOR% LSS %DOTNET4_VER_TARGET_MAJOR% goto InstallDotNet4
if %DOTNET4_VER_MAJOR% GTR %DOTNET4_VER_TARGET_MAJOR% goto SkipDotNet4Inst
if %DOTNET4_VER_MINOR% LSS %DOTNET4_VER_TARGET_MINOR% goto InstallDotNet4
if %DOTNET4_VER_MINOR% GTR %DOTNET4_VER_TARGET_MINOR% goto SkipDotNet4Inst
if %DOTNET4_VER_BUILD% GEQ %DOTNET4_VER_TARGET_BUILD% goto SkipDotNet4Inst
:InstallDotNet4
+if exist %SystemRoot%\Temp\wou_net4pre_tried.txt goto SkipDotNet4Inst
+if "%DOTNET4_PREREQ_ID%"=="" (goto InstallDotNet4Main)
+echo Checking .NET Framework 4 prerequisites...
+%CSCRIPT_PATH% //Nologo //B //E:vbs ListInstalledUpdateIds.vbs
+if exist "%TEMP%\InstalledUpdateIds.txt" (
+  %SystemRoot%\System32\find.exe /I "%DOTNET4_PREREQ_ID%" "%TEMP%\InstalledUpdateIds.txt" >nul 2>&1
+  if errorlevel 1 (
+    echo %DOTNET4_PREREQ_ID%>"%TEMP%\MissingUpdateIds.txt"
+    del "%TEMP%\InstalledUpdateIds.txt"
+  ) else (
+    del "%TEMP%\InstalledUpdateIds.txt"
+  )
+) else (
+  echo %DOTNET4_PREREQ_ID%>"%TEMP%\MissingUpdateIds.txt"
+)

+call ListUpdatesToInstall.cmd /excludestatics /ignoreblacklist
+if errorlevel 1 goto ListError
+if exist "%TEMP%\UpdatesToInstall.txt" (
+  echo Installing .NET Framework 4 prerequisites...
+  call InstallListedUpdates.cmd /selectoptions %VERIFY_MODE% /ignoreerrors
+  if not errorlevel 1 (
+    if not exist %SystemRoot%\Temp\nul md %SystemRoot%\Temp
+    echo. >%SystemRoot%\Temp\wou_net4pre_tried.txt
+    set RECALL_REQUIRED=1
+    goto Installed
+  )
+)
+:InstallDotNet4Main
if exist %SystemRoot%\Temp\wou_net4_tried.txt goto SkipDotNet4Inst
echo. >%SystemRoot%\Temp\wou_net4_tried.txt
if "%OS_NAME%"=="w60" (
  set DOTNET4_FILENAME=..\dotnet\NDP46-KB3045557-x86-x64-AllOS-ENU.exe
  set DOTNET4LP_FILENAME=..\dotnet\NDP46-KB3045557-x86-x64-AllOS-%OS_LANG%.exe
) else (
-  set DOTNET4_FILENAME=..\dotnet\NDP462-KB3151800-x86-x64-AllOS-ENU.exe
-  set DOTNET4LP_FILENAME=..\dotnet\NDP462-KB3151800-x86-x64-AllOS-%OS_LANG%.exe
+  set DOTNET4_FILENAME=..\dotnet\NDP47-KB3186497-x86-x64-AllOS-ENU.exe
+  set DOTNET4LP_FILENAME=..\dotnet\NDP47-KB3186497-x86-x64-AllOS-%OS_LANG%.exe
)
if "%OS_SRV_CORE%"=="1" (
  set DOTNET4_INSTOPTS=/q /norestart
) else (
  set DOTNET4_INSTOPTS=/passive /norestart
)
if not exist %DOTNET4_FILENAME% (
-  echo Warning: .NET Framework 4.6.x installation file ^(%DOTNET4_FILENAME%^) not found.
-  echo %DATE% %TIME% - Warning: .NET Framework 4.6.x installation file ^(%DOTNET4_FILENAME%^) not found>>%UPDATE_LOGFILE%
+  echo Warning: .NET Framework 4 installation file ^(%DOTNET4_FILENAME%^) not found.
+  echo %DATE% %TIME% - Warning: .NET Framework 4 installation file ^(%DOTNET4_FILENAME%^) not found>>%UPDATE_LOGFILE%
  goto SkipDotNet4Inst
)
-echo Installing .NET Framework 4.6.x...
+echo Installing .NET Framework 4...
call InstallOSUpdate.cmd %DOTNET4_FILENAME% %VERIFY_MODE% /errorsaswarnings %DOTNET4_INSTOPTS% /lcid 1033
if "%OS_LANG%" NEQ "enu" (
  if exist %DOTNET4LP_FILENAME% (
-    echo Installing .NET Framework 4.6.x Language Pack...
+    echo Installing .NET Framework 4 Language Pack...
    for /F %%i in ('dir /B %DOTNET4LP_FILENAME%') do call InstallOSUpdate.cmd ..\dotnet\%%i %VERIFY_MODE% /errorsaswarnings %DOTNET4_INSTOPTS%
  ) else (
-    echo Warning: .NET Framework 4.6.x Language Pack installation file ^(%DOTNET4LP_FILENAME%^) not found.
-    echo %DATE% %TIME% - Warning: .NET Framework 4.6.x Language Pack installation file ^(%DOTNET4LP_FILENAME%^) not found>>%UPDATE_LOGFILE%
+    echo Warning: .NET Framework 4 Language Pack installation file ^(%DOTNET4LP_FILENAME%^) not found.
+    echo %DATE% %TIME% - Warning: .NET Framework 4 Language Pack installation file ^(%DOTNET4LP_FILENAME%^) not found>>%UPDATE_LOGFILE%
  )
)
set RECALL_REQUIRED=1
set DOTNET4_FILENAME=
set DOTNET4LP_FILENAME=
set DOTNET4_INSTOPTS=
:SkipDotNet4Inst

...

:Cleanup
...
if exist %SystemRoot%\Temp\wou_net4_tried.txt del %SystemRoot%\Temp\wou_net4_tried.txt
+if exist %SystemRoot%\Temp\wou_net4pre_tried.txt del %SystemRoot%\Temp\wou_net4pre_tried.txt

Re: .NET Framework 4.7

PostPosted: 18.05.2017, 15:27
by WSUSUpdateAdmin
Moin!

Danke schön! :)
Ich hoffe, ich schaffe das morgen...

Gruß
Torsten

Re: .NET Framework 4.7

PostPosted: 24.05.2017, 23:09
by WSUSUpdateAdmin
Was lange währt...: http://trac.wsusoffline.net/browser/trunk (r871)
Schönen Vater-/Herren-Tag! :)
GTW

Re: .NET Framework 4.7

PostPosted: 25.05.2017, 23:43
by aker
Könnten wir für Build 10240 (LTSB) und 10586 die 4.6.2 beibehalten?

Habe gerade erst festgestellt, dass sie nicht nur als nicht mehr kompatibel gelistet sind, sondern sich tatsächlich auch nicht mehr installieren lassen.

Viele Grüße

Re: .NET Framework 4.7

PostPosted: 26.05.2017, 13:06
by boco
Wie wäre es, wenn wir Build 10240 generell als LTSB 2015 TH1 auslagern? Als CB und CBB ist 10240 ja EOL. Ein überwältigender Teil der Nutzer wird LTSB 2015 niemals brauchen, und so könnten die 'normalen' Windows-10-Medien verkleinert werden. Platz und ne Menge Bandbreite gespart. Immer, wenn ein LTSB-Build nur noch als LTSB verfügbar ist, empfiehlt sich diese Ausgliederung.

LTSB 2016 RS1 ist als CBB noch aktiv und kann so bleiben.


Alternativer Vorschlag: Option, ob "reine" LTSB-Builds im Windows-10-Medium inkludiert werden sollen.

_____
Bezüglich .NET wären es jetzt also:
Server 2008 - .NET 4.6
WinX 10240 TH1 und 10586 TH2 - .NET 4.6.2
alle anderen - .NET 4.7

Korrekt?

Re: .NET Framework 4.7

PostPosted: 26.05.2017, 16:17
by aker
Server 2012 hat auch noch eine eigene Regelung, wenn ich mich nicht irre...
(Habe gerade aber keine VM greifbar, auf der ich testen könnte)

Ich wäre auch generell dafür Windows 10 in die gesamten Unterbuilds zu splitten. Dafür habe ich momentan aber noch keine Idee, wie das gehen soll.

Viele Grüße

Re: .NET Framework 4.7

PostPosted: 26.05.2017, 22:51
by boco
Naja, jeden einzeln ist wohl doch etwas übertrieben.

Build 10240 nimmt ja eine Sonderstellung ein, da er noch etliche Jahre als LTSB verfügbar bleiben wird. 10586 wird bei EOL einfach sang- und klanglos verschwinden, es gibt keine LTSB davon. 14393 ist dann der nächste.

das LTSB-ISO brauchen dann wirklich nur die System-Admins, die LTSB 2015 im Unternehmen am Laufen haben. Es ist lizenzrechtlich für Privatnutzer so gut wie unmöglich, eine LTSB zu nutzen, da es diese nur als Enterprise (Volume) gibt.