Page 1 of 1

static folder

PostPosted: 05.12.2018, 10:50
by grinpress
Hello WOU Experts !
Can you please explain me the role of the client\static folder.
What is it served for ? How come its files are being populated with the content ?
How come its content used when running UpdateInstaller.exe ?
Is its content correlated with UpdateInstaller.ini content ?
What is the content of StaticUpdate-w63-dotnet-XXX.txt and StaticUpdate-w63-dotnet-XXX-seconly.txt ? For what purpose these files exist ?

Re: static folder

PostPosted: 06.12.2018, 03:25
by aker
.\client\static contains definitions for some routines requiring wsusou to handle them different as Windows Update would do.
Some examples:
- the prerequirements for IE9 / IE10
- the Family-Update for .NET 3.5.1 (required after installing .NET 3.5.1 on Windows Vista / Server 2008 and earlier)
- the updates, wsusou should install before using the Windows Update Agent to determine missing updates ("*wupre*.txt") [drastically decreases search time]
- ...

The static-folder isn't used by UpdateInstaller.exe in any way. Some scripts, which are running after you pressed "Start" in UpdateInstaller, read the files and use their contents. Depending on the operating system and the switches you selected in UpdateInstaller some files are used or not.

UpdateInstaller.ini just contains the default-settings for the CheckBoxes in UpdateInstaller.

The "dotnet"-files contain the KB-numbers for the .NET Framework updates as the Windows Update Agent (WUA) just gives out the "main"-KB-numer of the rollup. wsusou normally searches updates by their KB-number. For the .NET updates the number WUA gives out differs (depending on the installed version of .NET Framework) from the KB-number in the file names. These static definitions fix the searching-algorithm.

Re: static folder

PostPosted: 06.12.2018, 12:54
by grinpress
Thanks for the reply.
Actually, I was asking the "static folder" question because I thought the issue I experience may be related to the static content.
The issue is :
I use WOU not via GUI, but with using command line (I have created MSI with client folder after patches generated and I am running update.cmd from the client folder for silent execution ) I use "security-only patches" option only for Win2012 R2 server. Overall It works fine. But recently I've put attention that some .net patches are not getting installed those are avaible in client\glb folder.
But with same content when I execute manually updateinstaller.exe (via GUI) and select "security -only patches " option only, I can see .Net patches are installing
Hence would like to know the difference between update.cmd and updateinstaller.exe

Re: static folder

PostPosted: 06.12.2018, 16:31
by Dalai
That should be easy to answer by looking at %SystemRoot%\wsusofflineupdate.log (C:\Windows\wsusofflineupdate.log), in particular the difference in runs of Update.cmd vs. UpdateInstaller.exe. My guess is that you pass different (or even no) command-line switches to Update.cmd than UpdateInstaller does, especially when selecting the SecOnly option. The first few lines of each run may contain information e.g. like this
Code: Select all
Info: Option /updatecpp detected
Should be easy to compare them.


Re: static folder

PostPosted: 06.12.2018, 19:05
by hbuhrmester
As far as I know, the UpdateInstaller.exe inherits the option seconly from the UpdateGenerator.exe.

When the different update rollups were introduced, the full quality update rollups superseded the security-only updates. Therefore, security-only updates were not downloaded by default, and the UpdateGenerator.exe needed a switch to enable them.

The UpdateGenerator.exe passes the option /seconly to the script DownloadUpdates.cmd.

The script DownloadUpdates.cmd adjusts the settings file UpdateInstaller.ini, so that the UpdateInstaller.exe could also use the security-only updates.

DownloadUpdates.cmd 11.5, lines 1552-1573:
Code: Select all
echo Adjusting UpdateInstaller.ini file...
if exist ..\client\UpdateInstaller.ini (
  if exist ..\client\UpdateInstaller.ori del ..\client\UpdateInstaller.ori
  ren ..\client\UpdateInstaller.ini UpdateInstaller.ori
  for /F "tokens=1* delims==" %%i in (..\client\UpdateInstaller.ori) do (
    if /i "%%i"=="seconly" (
      if "%SECONLY%"=="1" (
        echo seconly=Enabled>>..\client\UpdateInstaller.ini
      ) else (
        echo seconly=Disabled>>..\client\UpdateInstaller.ini
    ) else (
      if "%%j"=="" (
        echo %%i>>..\client\UpdateInstaller.ini
      ) else (
        echo %%i=%%j>>..\client\UpdateInstaller.ini
  del ..\client\UpdateInstaller.ori
echo %DATE% %TIME% - Info: Adjusted UpdateInstaller.ini file>>%DOWNLOAD_LOGFILE%

The UpdateInstaller.exe passes the option /seconly to the script Update.cmd.

The mentioned dependency between quality and security-only update-rollups was changed after one month, though:

UPDATED 12/5/2016: Starting in December 2016, monthly rollups will not supersede security only updates. The November 2016 monthly rollup will also be updated to not supersede security only updates. ... a-p/166783

This means, that now both full quality update rollups and security-only updates are downloaded by default.

Re: static folder

PostPosted: 11.12.2018, 09:32
by grinpress
Thanks a lot for the responses.
I did compare lines within wsusofflineupdate.log and found:
1. when executing UpdateInstaller manually (using GUI), the log contains: Info: Option /seconly detected
2. When executing via DoUpdate.cmd (using msi I've created) , the log do not contain any lines like this.
I use the following script :

@echo off
cd /D "%~dp0cmd"
start DoUpdate.cmd %*

What is the right syntax to add /seconly switch or any other switch into the script , please?

The bottom line, my problem is that the above script works fine and installs Security only updates for OS, IE and Adobe Flash player ( as you explained, seconly option is inherited from Generator.exe option), but it does not install .Net security only patche (like kb4344178, kb4457056).
When I execute UpdateInstaller manually (GUI) and select seconly, it does succeed to install all above patches and plus .Net

Re: static folder

PostPosted: 11.12.2018, 18:32
by Dalai
You have to pass switches to client\Update.cmd (or client\cmd\DoUpdate.cmd) yourself. This is what UpdateInstaller does with all the options and checkboxes you can select in it. If /seconly is not passed to Update.cmd it will install the Rollups instead of the SecOnly packages.


Re: static folder

PostPosted: 12.12.2018, 00:21
by boco
Code: Select all
DoUpdate.cmd /seconly

Simple as that.