Установите Microsoft KB951608 с WIX - PullRequest
2 голосов
/ 11 января 2010

На нашем сервере (win 2008 r2) мы включили параметр «принудительная сетевая аутентификация», чтобы обеспечить, что клиент должен поддерживать NLA, поскольку порт 3389 доступен напрямую из Интернета. Но в Windows XP SP3 NLA кажется отключенным по умолчанию. Поскольку я написал установщик с WIX для распространения файлов rdp, я также хотел бы установить эти две записи реестра (одна представляет собой разделенный запятыми список типа REG_SZ, а другая - список типа REG_MULTI_SZ), как описано в http://support.microsoft.com/kb/951608.

Я уже пробовал это с RegistrySearch и RegistryValue, но у меня ничего не получилось. Основная сложность заключается в том, как мне следует обрабатывать эти разделенные запятыми списки типа REG_SZ.

Может кто-нибудь дать мне подсказку? Заранее спасибо.

1 Ответ

1 голос
/ 11 января 2010

Стандартный способ решить эту проблему - установить исправление с помощью механизма начальной загрузки, то есть отдельный файл «setup.exe», который сначала устанавливает исправление, а затем запускает установщик WiX / MSI.

Загрузчик Visual Studio предоставляет такой механизм. Пакеты, которые могут быть установлены этим загрузчиком, должны быть описаны XML-манифестом package.xml. Этот файл должен находиться в подпапке C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bootstrapper \ Packages (Visual Studio 2008).

На следующих двух страницах описано, как создать / создать собственный манифест пакета для KB951608:

Создание пользовательского пакета Bootstrapper (статья для VS 2005, но в основном должна работать и с VS 2008)

Добавить собственную (пользовательскую) предпосылку в приложение "ClickOnce"

Генератор для создания манифеста можно скачать с MSDN:

Генератор манифеста Bootstrapper

Вы можете использовать этот инструмент для создания простого манифеста, подобного этому:

<?xml version="1.0" encoding="utf-8"?>
<Package Name="KB952155" Culture="en-US" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
  <PackageFiles CopyAllPackageFiles="false">
    <PackageFile Name="windowsxp-kb952155-x86-enu.exe" PublicKey="3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D05744765CEAF1FC0EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001" />
  </PackageFiles>
  <Commands Reboot="Defer">
    <Command PackageFile="windowsxp-kb952155-x86-enu.exe">
      <ExitCodes>
        <DefaultExitCode Result="Fail" String="Anunexpectedexitcodewasr" FormatMessageFromSystem="true" />
      </ExitCodes>
    </Command>
  </Commands>
  <Strings>
    <String Name="Culture">en</String>
    <String Name="DisplayName">KB952155</String>
    <String Name="Anunexpectedexitcodewasr">An unexpected exit code was returned from the installer. The installation failed.</String>
  </Strings>
</Package>

Использование загрузчика, к сожалению, напрямую не поддерживается WiX, но вы можете использовать простой скрипт MSBuild для его создания (хотя для этого требуется установить Visual Studio):

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WindowsSDKPath>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\GenericBootstrapper\3.5@Path)</WindowsSDKPath>
  </PropertyGroup>

    <ItemGroup>
        <BootstrapperFile Include="KB952155">
            <ProductName>KB952155</ProductName>
        </BootstrapperFile>
    </ItemGroup>

    <Target Name="Bootstrapper">
        <GenerateBootstrapper ApplicationFile="mySetup.msi" Culture="en-US" ApplicationName="My RDP Setup" OutputPath="C:\myoutputfolder\en-US" BootstrapperItems="@(BootstrapperFile)" Path="$(WindowsSDKPath)" />
    </Target>
</Project>

Этот скрипт можно вызвать как шаг после сборки:

%WINDIR%\Microsoft.NET\Framework\v3.5\msbuild.exe GenerateBootstrapper.msbuild
...