Значит так. Путем кропотливого ковыряния, проблему с вечноустанавливающимся КВ976569 удалось понять и решить.
Для этого пришлось изучить
протокол Windows Update и
сниффером мониторить трафик между клиентом и WSUS.
В результате удалось вытащить кусок с правилами, по которым клиент проверяет установлен этот апдейт или нет:
Код:

<ApplicabilityRules>
<IsInstalled>
<Or>
<And>
<b.RegSz Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 2.0 Service Pack 2\SP2\KB960043" Value="ThisVersionInstalled" Comparison="EqualTo" Data="Y" />
<b.FileExists Path="\Microsoft.NET\Framework\v2.0.50727\Mscorlib.dll" Csidl="36" />
<b.FileVersion Path="\Microsoft.NET\Framework\v2.0.50727\Mscorlib.dll" Comparison="GreaterThanOrEqualTo" Version="2.0.50727.4413" Csidl="36" />
</And>
<And>
<Not>
<b.RegSz Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 2.0 Service Pack 2\SP2\KB960043" Value="ThisVersionInstalled" Comparison="EqualTo" Data="Y" />
</Not>
<b.FileExists Path="\Microsoft.NET\Framework\v2.0.50727\Mscorlib.dll" Csidl="36" />
<b.FileVersion Path="\Microsoft.NET\Framework\v2.0.50727\Mscorlib.dll" Comparison="GreaterThanOrEqualTo" Version="2.0.50727.3607" Csidl="36" />
</And>
</Or>
</IsInstalled>
<IsInstallable>
<And>
<b.RegValueExists Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" Value="Install" Type="REG_DWORD" />
<b.RegDword Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" Value="Install" Comparison="EqualTo" Data="1" RegType32="false" />
<b.RegValueExists Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" Value="SP" Type="REG_DWORD" RegType32="false" />
<b.RegDword Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" Value="SP" Comparison="EqualTo" Data="2" RegType32="false" />
</And>
</IsInstallable>
</ApplicabilityRules>
Таким образом становится понятно, что система считает апдейт установленным, если:
а) Установлен KB960043 и версия файла Mscorlib.dll равна или старше 2.0.50727.4413
б) НЕ установлен KB960043 и версия файла Mscorlib.dll равна или старше 2.0.50727.3607
Так что для того, чтобы заткнуть Windows Update, нужно обновить mscorlib до версии 4413 и все. Проблема решена.
Файлы можно извлечь прям из этого апдейта: если открывать msp'шку апдейта 7-zip'ом, то там внутри, кроме всего прочего, будут 2 каба. Нам, в случае с репаком от
gora, нужен QFEGDR. Извлекаем оттуда все 4 дллки (можно заменить только mscorlib, но лучше уж все сразу я думаю), переименовываем в нормальный вид и заменяем существующие.
Почему апдейт не делает этого сам я не знаю. Вероятно, что при сборке репака у Жоры где-то что-то пошло не так, и наш апдейт при установке сбивается и фактически не обновляет файлы, несмотря на то, что прописывается везде и считает себя законно установленным. Может где-то что-то не то в реестре, может быть несоответствие версий исходных файлов... Для того, чтобы это точно понять, нужно поковыряться и разобрать msp'шку апдейта, но мне этим заниматься лень

Кому интересно --
InstEd в руки и вперед
gora, не отчаивайтесь и продолжайте работать над репаком. Мне он очень нравится. В том числе и тем, что все включено и не надо никаких компиляторов, не надо ничего самому собирать. Скачал, файлы заменил, винду пересобрал, нарезал и вперед. Быстро и удобно
З.Ы. Теперь, к стати, с использованием вышеуказанного метода можно буквально за полчаса выяснить, по какой причине происходит вечная переустановка какого-либо апдейта, т.к. нужно просто выковырять правила и посмотреть что к чему.
Надеюсь, эта инфа поможет кому-нибудь с такой проблемой или же с похожей траблой в будущем
