Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Dark Simpson

Новый участник


Сообщения: 13
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Значит так. Путем кропотливого ковыряния, проблему с вечноустанавливающимся КВ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, не отчаивайтесь и продолжайте работать над репаком. Мне он очень нравится. В том числе и тем, что все включено и не надо никаких компиляторов, не надо ничего самому собирать. Скачал, файлы заменил, винду пересобрал, нарезал и вперед. Быстро и удобно

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

Отправлено: 02:55, 19-03-2010 | #545