2010-01-11 105 views
2

在我們的服務器(win 2008 r2)上,我們啓用了「強制網絡身份驗證」設置,強制客戶端必須支持NLA,因爲端口3389可從Internet直接訪問。但是在Windows XP SP3上,NLA似乎被默認禁用。當我用WIX編寫一個安裝程序來分發rdp文件時,我還想安裝這兩個註冊表項(一個是逗號分隔的REG_SZ類型列表,一個是REG_MULTI_SZ類型的列表),如http://support.microsoft.com/kb/951608中所述。在WIX上安裝Microsoft KB951608

我已經用RegistrySearch和RegistryValue試過了,但是我還沒有成功。主要困難是我應該如何處理這些逗號分隔的REG_SZ類型列表。

任何人都可以給我一個提示嗎?提前致謝。

回答

1

解決此問題的標準方法是使用引導程序機制(即單獨的「setup.exe」文件)安裝此修補程序,該文件首先安裝此修補程序,然後啓動您的WiX/MSI安裝程序。

Visual Studio引導程序提供了這種機制。可以由此引導程序安裝的軟件包需要由名爲package.xml的XML清單來描述。此文件需要位於C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bootstrapper \ Packages(Visual Studio 2008)的子文件夾中。

以下兩頁介紹瞭如何編寫/創建自己的包清單爲KB951608:

Authoring a Custom Bootstrapper Package(本文是爲VS 2005,但基本上應該在VS 2008的工作以及)

Add your own (custom) prerequisite to "ClickOnce" application

一種用於創建清單生成器可以從MSDN下載:

Bootstrapper Manifest Generator

您可以使用此工具來創建一個簡單的清單如下:

<?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\[email protected])</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> 

此腳本可以稱爲後構建s tep:

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

謝謝你的回答。不幸的是,它似乎是沒有來自Microsoft的hotfix installer-exe可用於kb951608。但我在這裏找到了一個可以完成這項工作的解決方法vb-script:http://gallery.technet.microsoft.com/ScriptCenter/en-us/41a472e1-9660-4813-be4f-4b81a5345d75 – Snowfox 2010-01-11 12:59:12

+0

http:/? /www.microsoft.com/downloads/details.aspx?FamilyId=6E1EC93D-BDBD-4983-92F7-479E088570AD?這是KB951608的修補程序。 – 2010-01-11 13:07:43