Move IISCompression installer from VSTS to Github (#21)
* init commit for migrating the installer * update wix project to pick up the binaries from the right location * update comments * remove packages.config for CustomAction * update Microbuild package * update CA project * update submodule reference to IIS-Common to the latest commit * Use include.wxi in IIS.Setup * Add back packages.config for CA * update include path for wix project * update reference to IIS.Setup
This commit is contained in:
Родитель
4b4c884f1f
Коммит
b0a4ef9fb7
|
@ -1,6 +1,9 @@
|
|||
[submodule "IIS-Common"]
|
||||
path = IIS-Common
|
||||
url = https://github.com/Microsoft/IIS.Common.git
|
||||
[submodule "IIS-Setup"]
|
||||
path = IIS-Setup
|
||||
url = https://github.com/Microsoft/IIS.Setup.git
|
||||
[submodule "submodules/zlib"]
|
||||
path = submodules/zlib
|
||||
url = https://github.com/madler/zlib.git
|
||||
|
|
|
@ -15,6 +15,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CompressionSchemes", "Compr
|
|||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{634E96A0-30A6-4861-87A0-C7B45A6030F0}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Installer", "Installer", "{9505B06E-5E2A-4E50-8B7A-63D2358D6AE6}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iiscompressionCA", "CustomAction\iiscompressionCA.vcxproj", "{4098A5FB-D3D2-4DB1-9F37-BAE0E08F80F2}"
|
||||
EndProject
|
||||
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Setup", "Installer\Setup.wixproj", "{1ABF68C6-4E3D-4C36-AB9E-3AD64F9FD744}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommonLib", "IIS-Common\lib\CommonLib.vcxproj", "{B54A8F61-60DE-4AD9-87CA-D102F230678E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iisca", "IIS-Setup\iisca\lib\iisca.vcxproj", "{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
|
@ -55,6 +65,38 @@ Global
|
|||
{67AAF490-C8A7-4020-BB96-593B2001EA4D}.Release|x64.Build.0 = Release|x64
|
||||
{67AAF490-C8A7-4020-BB96-593B2001EA4D}.Release|x86.ActiveCfg = Release|Win32
|
||||
{67AAF490-C8A7-4020-BB96-593B2001EA4D}.Release|x86.Build.0 = Release|Win32
|
||||
{4098A5FB-D3D2-4DB1-9F37-BAE0E08F80F2}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{4098A5FB-D3D2-4DB1-9F37-BAE0E08F80F2}.Debug|x64.Build.0 = Debug|x64
|
||||
{4098A5FB-D3D2-4DB1-9F37-BAE0E08F80F2}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{4098A5FB-D3D2-4DB1-9F37-BAE0E08F80F2}.Debug|x86.Build.0 = Debug|Win32
|
||||
{4098A5FB-D3D2-4DB1-9F37-BAE0E08F80F2}.Release|x64.ActiveCfg = Release|x64
|
||||
{4098A5FB-D3D2-4DB1-9F37-BAE0E08F80F2}.Release|x64.Build.0 = Release|x64
|
||||
{4098A5FB-D3D2-4DB1-9F37-BAE0E08F80F2}.Release|x86.ActiveCfg = Release|Win32
|
||||
{4098A5FB-D3D2-4DB1-9F37-BAE0E08F80F2}.Release|x86.Build.0 = Release|Win32
|
||||
{1ABF68C6-4E3D-4C36-AB9E-3AD64F9FD744}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1ABF68C6-4E3D-4C36-AB9E-3AD64F9FD744}.Debug|x64.Build.0 = Debug|x64
|
||||
{1ABF68C6-4E3D-4C36-AB9E-3AD64F9FD744}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{1ABF68C6-4E3D-4C36-AB9E-3AD64F9FD744}.Debug|x86.Build.0 = Debug|x86
|
||||
{1ABF68C6-4E3D-4C36-AB9E-3AD64F9FD744}.Release|x64.ActiveCfg = Release|x64
|
||||
{1ABF68C6-4E3D-4C36-AB9E-3AD64F9FD744}.Release|x64.Build.0 = Release|x64
|
||||
{1ABF68C6-4E3D-4C36-AB9E-3AD64F9FD744}.Release|x86.ActiveCfg = Release|x86
|
||||
{1ABF68C6-4E3D-4C36-AB9E-3AD64F9FD744}.Release|x86.Build.0 = Release|x86
|
||||
{B54A8F61-60DE-4AD9-87CA-D102F230678E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{B54A8F61-60DE-4AD9-87CA-D102F230678E}.Debug|x64.Build.0 = Debug|x64
|
||||
{B54A8F61-60DE-4AD9-87CA-D102F230678E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{B54A8F61-60DE-4AD9-87CA-D102F230678E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{B54A8F61-60DE-4AD9-87CA-D102F230678E}.Release|x64.ActiveCfg = Release|x64
|
||||
{B54A8F61-60DE-4AD9-87CA-D102F230678E}.Release|x64.Build.0 = Release|x64
|
||||
{B54A8F61-60DE-4AD9-87CA-D102F230678E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{B54A8F61-60DE-4AD9-87CA-D102F230678E}.Release|x86.Build.0 = Release|Win32
|
||||
{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}.Debug|x64.Build.0 = Debug|x64
|
||||
{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}.Release|x64.ActiveCfg = Release|x64
|
||||
{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}.Release|x64.Build.0 = Release|x64
|
||||
{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@ -64,6 +106,10 @@ Global
|
|||
{CA3EFC47-0ABB-45AD-B672-F1D6066BF62A} = {FED855C7-07AF-4376-A4DA-73A15970002D}
|
||||
{8D460A29-85AF-4884-A839-160862A94130} = {634E96A0-30A6-4861-87A0-C7B45A6030F0}
|
||||
{67AAF490-C8A7-4020-BB96-593B2001EA4D} = {634E96A0-30A6-4861-87A0-C7B45A6030F0}
|
||||
{4098A5FB-D3D2-4DB1-9F37-BAE0E08F80F2} = {9505B06E-5E2A-4E50-8B7A-63D2358D6AE6}
|
||||
{1ABF68C6-4E3D-4C36-AB9E-3AD64F9FD744} = {9505B06E-5E2A-4E50-8B7A-63D2358D6AE6}
|
||||
{B54A8F61-60DE-4AD9-87CA-D102F230678E} = {634E96A0-30A6-4861-87A0-C7B45A6030F0}
|
||||
{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E} = {634E96A0-30A6-4861-87A0-C7B45A6030F0}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {446C09C4-34F0-4512-9E61-888C20633532}
|
||||
|
|
|
@ -0,0 +1,244 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#include <precomp.h>
|
||||
#include <Wbemidl.h>
|
||||
|
||||
HRESULT
|
||||
GetServiceCurrentState(
|
||||
__in LPCWSTR pszServiceName,
|
||||
__out SERVICE_STATUS * pServiceStatus
|
||||
)
|
||||
{
|
||||
HRESULT hr = S_OK;
|
||||
SC_HANDLE hServiceControlManager = NULL;
|
||||
SC_HANDLE hService = NULL;
|
||||
|
||||
hServiceControlManager = OpenSCManager( NULL, // Local machine
|
||||
NULL,
|
||||
STANDARD_RIGHTS_READ );
|
||||
if ( hServiceControlManager == NULL )
|
||||
{
|
||||
hr = HRESULT_FROM_WIN32( GetLastError() );
|
||||
DBGERROR_HR(hr);
|
||||
goto Finished;
|
||||
}
|
||||
|
||||
hService = OpenService( hServiceControlManager,
|
||||
pszServiceName,
|
||||
SERVICE_QUERY_STATUS );
|
||||
if ( hService == NULL )
|
||||
{
|
||||
hr = HRESULT_FROM_WIN32( GetLastError() );
|
||||
DBGERROR_HR(hr);
|
||||
goto Finished;
|
||||
}
|
||||
|
||||
if ( !QueryServiceStatus( hService,
|
||||
pServiceStatus ) )
|
||||
{
|
||||
hr = HRESULT_FROM_WIN32( GetLastError() );
|
||||
DBGERROR_HR(hr);
|
||||
goto Finished;
|
||||
}
|
||||
|
||||
Finished:
|
||||
|
||||
if ( hService != NULL )
|
||||
{
|
||||
CloseServiceHandle( hService );
|
||||
hService = NULL;
|
||||
}
|
||||
|
||||
if ( hServiceControlManager != NULL )
|
||||
{
|
||||
CloseServiceHandle( hService );
|
||||
hService = NULL;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
BOOL
|
||||
IsServiceRunning(
|
||||
const SERVICE_STATUS & ServiceStatus
|
||||
)
|
||||
{
|
||||
switch( ServiceStatus.dwCurrentState )
|
||||
{
|
||||
case SERVICE_RUNNING:
|
||||
case SERVICE_START_PENDING:
|
||||
case SERVICE_CONTINUE_PENDING:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
HRESULT
|
||||
IsQfeInstalled(
|
||||
__in LPCWSTR pszQfeName,
|
||||
__out BOOL * pfIsInstalled
|
||||
)
|
||||
{
|
||||
HRESULT hr = S_OK;
|
||||
CComPtr< IWbemLocator > pLocator;
|
||||
CComPtr< IWbemServices > pService;
|
||||
CComPtr< IEnumWbemClassObject > pEnumerator;
|
||||
ULONG Count = 0;
|
||||
CComPtr< IWbemClassObject > pProcessor;
|
||||
CComBSTR bstrNamespace;
|
||||
CComBSTR bstrQueryLanguage;
|
||||
CComBSTR bstrQuery;
|
||||
|
||||
if ( FAILED( hr = bstrNamespace.Append( L"root\\CIMV2", 10 ) ) ||
|
||||
FAILED( hr = bstrQueryLanguage.Append( L"WQL", 3 ) ) ||
|
||||
FAILED( hr = bstrQuery.Append( L"SELECT HotFixID FROM Win32_QuickFixEngineering WHERE HotFixID='" ) ) ||
|
||||
FAILED( hr = bstrQuery.Append( pszQfeName ) ) ||
|
||||
FAILED( hr = bstrQuery.Append( L"'", 1 ) ) )
|
||||
{
|
||||
goto Finished;
|
||||
}
|
||||
|
||||
hr = CoCreateInstance( __uuidof(WbemAdministrativeLocator),
|
||||
NULL, // pUnkOuter
|
||||
CLSCTX_INPROC_SERVER,
|
||||
__uuidof(IWbemLocator),
|
||||
reinterpret_cast< void** >( &pLocator ) );
|
||||
if ( FAILED( hr ) )
|
||||
{
|
||||
goto Finished;
|
||||
}
|
||||
|
||||
hr = pLocator->ConnectServer( bstrNamespace,
|
||||
NULL, // strUser
|
||||
NULL, // strPassword
|
||||
NULL, // strLocale
|
||||
WBEM_FLAG_CONNECT_USE_MAX_WAIT,
|
||||
NULL, // strAuthority
|
||||
NULL, // pCtx
|
||||
&pService );
|
||||
if ( FAILED( hr ) )
|
||||
{
|
||||
goto Finished;
|
||||
}
|
||||
|
||||
//
|
||||
// Set the proxy so that impersonation of the client occurs.
|
||||
//
|
||||
hr = CoSetProxyBlanket( pService,
|
||||
RPC_C_AUTHN_DEFAULT,
|
||||
RPC_C_AUTHZ_NONE,
|
||||
NULL,
|
||||
RPC_C_AUTHN_LEVEL_CONNECT,
|
||||
RPC_C_IMP_LEVEL_IMPERSONATE,
|
||||
NULL,
|
||||
EOAC_NONE);
|
||||
if ( FAILED( hr ) )
|
||||
{
|
||||
goto Finished;
|
||||
}
|
||||
|
||||
hr = pService->ExecQuery( bstrQueryLanguage,
|
||||
bstrQuery,
|
||||
WBEM_FLAG_FORWARD_ONLY,
|
||||
NULL,
|
||||
&pEnumerator );
|
||||
if ( FAILED( hr ) )
|
||||
{
|
||||
goto Finished;
|
||||
}
|
||||
|
||||
hr = pEnumerator->Next( WBEM_INFINITE,
|
||||
1L,
|
||||
&pProcessor,
|
||||
&Count );
|
||||
if ( FAILED( hr ) )
|
||||
{
|
||||
goto Finished;
|
||||
}
|
||||
|
||||
*pfIsInstalled = Count > 0;
|
||||
|
||||
Finished:
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
UINT
|
||||
WINAPI
|
||||
CheckForServicesRunningCA(
|
||||
MSIHANDLE hInstall
|
||||
)
|
||||
{
|
||||
HRESULT hr = S_OK;
|
||||
BOOL fIsServiceRunning = FALSE;
|
||||
SERVICE_STATUS ServiceStatus;
|
||||
LPCWSTR rgServiceNames[] = { L"WAS", L"WMSVC" };
|
||||
|
||||
IISLogInitialize(hInstall, UNITEXT(__FUNCTION__));
|
||||
|
||||
//
|
||||
// Check if any pService is running.
|
||||
//
|
||||
for( DWORD Index = 0; Index < _countof( rgServiceNames ); Index ++ )
|
||||
{
|
||||
hr = GetServiceCurrentState( rgServiceNames[Index],
|
||||
&ServiceStatus );
|
||||
if ( hr == HRESULT_FROM_WIN32( ERROR_SERVICE_DOES_NOT_EXIST ) )
|
||||
{
|
||||
hr = S_OK;
|
||||
}
|
||||
else if ( FAILED( hr ) )
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to query the state of the service '%s' hr=0x%x",
|
||||
rgServiceNames[Index],
|
||||
hr );
|
||||
DBGERROR_HR(hr);
|
||||
goto Finished;
|
||||
}
|
||||
else
|
||||
{
|
||||
fIsServiceRunning = IsServiceRunning( ServiceStatus );
|
||||
if ( fIsServiceRunning )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( fIsServiceRunning )
|
||||
{
|
||||
BOOL fQfeInstalled = FALSE;
|
||||
|
||||
hr = IsQfeInstalled( L"KB949172",
|
||||
&fQfeInstalled );
|
||||
if ( FAILED( hr ) )
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to query the QFE 'KB949172' information hr=0x%x",
|
||||
hr );
|
||||
DBGERROR_HR(hr);
|
||||
goto Finished;
|
||||
}
|
||||
|
||||
if ( fQfeInstalled )
|
||||
{
|
||||
//
|
||||
// QFE is already installed.
|
||||
//
|
||||
goto Finished;
|
||||
}
|
||||
|
||||
IISLogClose();
|
||||
return LogMsiCustomActionError( hInstall, 30003 );
|
||||
}
|
||||
|
||||
Finished:
|
||||
|
||||
IISLogClose();
|
||||
|
||||
// TODO Wire up when Rollback CA's are wired up
|
||||
return (SUCCEEDED(hr)) ? ERROR_SUCCESS : ERROR_SUCCESS;
|
||||
}
|
|
@ -0,0 +1,436 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#include <precomp.h>
|
||||
|
||||
DECLARE_DEBUG_PRINT_OBJECT( "iiscompressionCA.dll" );
|
||||
|
||||
HINSTANCE g_hinst;
|
||||
|
||||
BOOL WINAPI
|
||||
DllMain(
|
||||
HINSTANCE hModule,
|
||||
DWORD dwReason,
|
||||
LPVOID lpReserved
|
||||
)
|
||||
{
|
||||
UNREFERENCED_PARAMETER( lpReserved );
|
||||
switch( dwReason )
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
CREATE_DEBUG_PRINT_OBJECT;
|
||||
DisableThreadLibraryCalls( hModule );
|
||||
g_hinst = hModule;
|
||||
break;
|
||||
|
||||
case DLL_PROCESS_DETACH:
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
struct COMP_SCHEME
|
||||
{
|
||||
PCWSTR pszName;
|
||||
PCWSTR pszDll;
|
||||
};
|
||||
|
||||
// The installer inserts each scheme in g_compressionScheme to the beginning of
|
||||
// the scheme collection. Therefore, the scheme order appearing in the configuration
|
||||
// collection is opposite to their order in g_compressionScheme.
|
||||
COMP_SCHEME g_compressionScheme[] =
|
||||
{ { L"gzip", L"%ProgramFiles%\\IIS\\IIS Compression\\iiszlib.dll" },
|
||||
{ L"br" , L"%ProgramFiles%\\IIS\\IIS Compression\\iisbrotli.dll" } };
|
||||
|
||||
COMP_SCHEME g_defaultGzipScheme =
|
||||
{ L"gzip", L"%windir%\\system32\\inetsrv\\gzip.dll" };
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Custom action for installation:
|
||||
|
||||
Register the iiszlib (gzip) and iisbrotli (br) compression schemes
|
||||
|
||||
--*/
|
||||
UINT
|
||||
RegisterCompressionSchemesCA(
|
||||
IN MSIHANDLE hInstall
|
||||
)
|
||||
{
|
||||
IAppHostWritableAdminManager * pAdminMgr = NULL;
|
||||
IAppHostElement * pHttpCompressionSection = NULL;
|
||||
IAppHostElement * pNewSchemeElement = NULL;
|
||||
IAppHostElementCollection * pSchemeCollection = NULL;
|
||||
HRESULT hr = NOERROR;
|
||||
BOOL fDeleted;
|
||||
VARIANT varPropValue;
|
||||
|
||||
IISLogInitialize(hInstall, UNITEXT(__FUNCTION__));
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_INFORMATION,
|
||||
L"CA '%s' started to register iiszlib and iisbrotli compression schemes.",
|
||||
UNITEXT(__FUNCTION__));
|
||||
|
||||
VariantInit(&varPropValue);
|
||||
|
||||
hr = CoCreateInstance(__uuidof(AppHostWritableAdminManager),
|
||||
NULL,
|
||||
CLSCTX_INPROC_SERVER,
|
||||
__uuidof(IAppHostWritableAdminManager),
|
||||
(VOID **)&pAdminMgr);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to create an AppHostWritableAdminManager: hr=0x%x.",
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = pAdminMgr->GetAdminSection(L"system.webServer/httpCompression",
|
||||
L"MACHINE/WEBROOT/APPHOST",
|
||||
&pHttpCompressionSection);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to get the httpCompression section: hr=0x%x.",
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = pHttpCompressionSection->get_Collection(&pSchemeCollection);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to get the scheme collection of the httpCompression section: hr=0x%x.",
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
for (DWORD i = 0; i < _countof(g_compressionScheme); i++)
|
||||
{
|
||||
hr = DeleteElementFromCollection(pSchemeCollection,
|
||||
L"name",
|
||||
g_compressionScheme[i].pszName,
|
||||
FIND_ELEMENT_CASE_SENSITIVE,
|
||||
&fDeleted);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to delete the original scheme: '%s', hr=0x%x.",
|
||||
g_compressionScheme[i].pszName,
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
if (fDeleted == TRUE)
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_INFORMATION,
|
||||
L"Successfully deleted the original scheme: '%s'.",
|
||||
g_compressionScheme[i].pszName);
|
||||
}
|
||||
|
||||
hr = pSchemeCollection->CreateNewElement(L"scheme",
|
||||
&pNewSchemeElement);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to create a configuration element for the scheme: '%s', hr=0x%x.",
|
||||
g_compressionScheme[i].pszName,
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = VariantAssign(&varPropValue,
|
||||
g_compressionScheme[i].pszName);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = SetElementProperty(pNewSchemeElement,
|
||||
L"name",
|
||||
&varPropValue);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to set the name property for the scheme: '%s', hr=0x%x.",
|
||||
g_compressionScheme[i].pszName,
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = VariantAssign(&varPropValue,
|
||||
g_compressionScheme[i].pszDll);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = SetElementProperty(pNewSchemeElement,
|
||||
L"dll",
|
||||
&varPropValue);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to set the dll property for the scheme: '%s', hr=0x%x.",
|
||||
g_compressionScheme[i].pszName,
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = pSchemeCollection->AddElement(pNewSchemeElement, 0);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to add the configuration element for the scheme: '%s', hr=0x%x.",
|
||||
g_compressionScheme[i].pszName,
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_INFORMATION,
|
||||
L"Successfully created the new scheme: '%s'.",
|
||||
g_compressionScheme[i].pszName);
|
||||
}
|
||||
|
||||
hr = pAdminMgr->CommitChanges();
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to commit the configuration changes: hr=0x%x.",
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
exit:
|
||||
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_INFORMATION,
|
||||
L"CA '%s' completed with return code hr=0x%x",
|
||||
UNITEXT(__FUNCTION__),
|
||||
hr);
|
||||
|
||||
IISLogClose();
|
||||
VariantClear(&varPropValue);
|
||||
|
||||
if (pNewSchemeElement != NULL)
|
||||
{
|
||||
pNewSchemeElement->Release();
|
||||
pNewSchemeElement = NULL;
|
||||
}
|
||||
|
||||
if (pSchemeCollection != NULL)
|
||||
{
|
||||
pSchemeCollection->Release();
|
||||
pSchemeCollection = NULL;
|
||||
}
|
||||
|
||||
if (pHttpCompressionSection != NULL)
|
||||
{
|
||||
pHttpCompressionSection->Release();
|
||||
pHttpCompressionSection = NULL;
|
||||
}
|
||||
|
||||
if (pAdminMgr != NULL)
|
||||
{
|
||||
pAdminMgr->Release();
|
||||
pAdminMgr = NULL;
|
||||
}
|
||||
|
||||
return (SUCCEEDED(hr)) ? ERROR_SUCCESS : ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Custom action for uninstallation:
|
||||
|
||||
Unregister the iiszlib (gzip) and iisbrotli (br) compression schemes
|
||||
and re-register the default in-box gzip compression scheme (gzip.dll)
|
||||
|
||||
--*/
|
||||
UINT
|
||||
CleanupCompressionSchemesCA(
|
||||
IN MSIHANDLE hInstall
|
||||
)
|
||||
{
|
||||
IAppHostWritableAdminManager * pAdminMgr = NULL;
|
||||
IAppHostElement * pHttpCompressionSection = NULL;
|
||||
IAppHostElement * pNewSchemeElement = NULL;
|
||||
IAppHostElementCollection * pSchemeCollection = NULL;
|
||||
HRESULT hr = NOERROR;
|
||||
BOOL fDeleted;
|
||||
VARIANT varPropValue;
|
||||
|
||||
IISLogInitialize(hInstall, UNITEXT(__FUNCTION__));
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_INFORMATION,
|
||||
L"CA '%s' started to unregister iiszlib and iisbrotli compression schemes.",
|
||||
UNITEXT(__FUNCTION__));
|
||||
|
||||
VariantInit(&varPropValue);
|
||||
|
||||
hr = CoCreateInstance(__uuidof(AppHostWritableAdminManager),
|
||||
NULL,
|
||||
CLSCTX_INPROC_SERVER,
|
||||
__uuidof(IAppHostWritableAdminManager),
|
||||
(VOID **)&pAdminMgr);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to create an AppHostWritableAdminManager: hr=0x%x.",
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = pAdminMgr->GetAdminSection(L"system.webServer/httpCompression",
|
||||
L"MACHINE/WEBROOT/APPHOST",
|
||||
&pHttpCompressionSection);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to get the httpCompression section: hr=0x%x.",
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = pHttpCompressionSection->get_Collection(&pSchemeCollection);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to get the scheme collection of the httpCompression section: hr=0x%x.",
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
for (DWORD i = 0; i < _countof(g_compressionScheme); i++)
|
||||
{
|
||||
hr = DeleteElementFromCollection(pSchemeCollection,
|
||||
L"name",
|
||||
g_compressionScheme[i].pszName,
|
||||
FIND_ELEMENT_CASE_SENSITIVE,
|
||||
&fDeleted);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to delete the scheme: '%s', hr=0x%x.",
|
||||
g_compressionScheme[i].pszName,
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
if (fDeleted == TRUE)
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_INFORMATION,
|
||||
L"Successfully deleted the scheme: '%s'.",
|
||||
g_compressionScheme[i].pszName);
|
||||
}
|
||||
}
|
||||
|
||||
hr = pSchemeCollection->CreateNewElement(L"scheme",
|
||||
&pNewSchemeElement);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to create a configuration element for the scheme: '%s', hr=0x%x.",
|
||||
g_defaultGzipScheme.pszName,
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = VariantAssign(&varPropValue,
|
||||
g_defaultGzipScheme.pszName);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = SetElementProperty(pNewSchemeElement,
|
||||
L"name",
|
||||
&varPropValue);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to set the name property for the scheme: '%s', hr=0x%x.",
|
||||
g_defaultGzipScheme.pszName,
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = VariantAssign(&varPropValue,
|
||||
g_defaultGzipScheme.pszDll);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = SetElementProperty(pNewSchemeElement,
|
||||
L"dll",
|
||||
&varPropValue);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to set the dll property for the scheme: '%s', hr=0x%x.",
|
||||
g_defaultGzipScheme.pszName,
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
hr = pSchemeCollection->AddElement(pNewSchemeElement, 0);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to add the configuration element for the scheme: '%s', hr=0x%x.",
|
||||
g_defaultGzipScheme.pszName,
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_INFORMATION,
|
||||
L"Successfully recreated the default scheme: '%s'.",
|
||||
g_defaultGzipScheme.pszName);
|
||||
|
||||
hr = pAdminMgr->CommitChanges();
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_ERROR,
|
||||
L"Failed to commit the configuration changes: hr=0x%x.",
|
||||
hr);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
exit:
|
||||
|
||||
IISLogWrite(SETUP_LOG_SEVERITY_INFORMATION,
|
||||
L"CA '%s' completed with return code hr=0x%x",
|
||||
UNITEXT(__FUNCTION__),
|
||||
hr);
|
||||
|
||||
IISLogClose();
|
||||
VariantClear(&varPropValue);
|
||||
|
||||
if (pNewSchemeElement != NULL)
|
||||
{
|
||||
pNewSchemeElement->Release();
|
||||
pNewSchemeElement = NULL;
|
||||
}
|
||||
|
||||
if (pSchemeCollection != NULL)
|
||||
{
|
||||
pSchemeCollection->Release();
|
||||
pSchemeCollection = NULL;
|
||||
}
|
||||
|
||||
if (pHttpCompressionSection != NULL)
|
||||
{
|
||||
pHttpCompressionSection->Release();
|
||||
pHttpCompressionSection = NULL;
|
||||
}
|
||||
|
||||
if (pAdminMgr != NULL)
|
||||
{
|
||||
pAdminMgr->Release();
|
||||
pAdminMgr = NULL;
|
||||
}
|
||||
|
||||
return (SUCCEEDED(hr)) ? ERROR_SUCCESS : ERROR_SUCCESS;
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
; Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
; Licensed under the MIT license.
|
||||
|
||||
LIBRARY iiscompressionCA
|
||||
|
||||
EXPORTS
|
||||
|
||||
; IIS Common Config custom actions
|
||||
|
||||
IISScheduleInstallCA
|
||||
IISScheduleUninstallCA
|
||||
IISExecuteCA
|
||||
IISBeginTransactionCA
|
||||
IISRollbackTransactionCA
|
||||
IISCommitTransactionCA
|
||||
|
||||
CheckForSharedConfigurationCA
|
||||
|
||||
ScheduleInstallWindowsHotfixCA
|
||||
ExecuteInstallWindowsHotfixCA
|
||||
ExecuteCleanUpWindowsHotfixCA
|
||||
ScheduleRebootIfRequiredCA
|
||||
|
||||
; Utility
|
||||
CheckForServicesRunningCA
|
||||
|
||||
ExecuteCleanUpWindowsHotfixCA
|
||||
|
||||
RegisterCompressionSchemesCA
|
||||
CleanupCompressionSchemesCA
|
|
@ -0,0 +1,9 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#define VER_FILETYPE VFT_DLL
|
||||
#define RC_VERSION_INTERNAL_NAME "iiscompressionCA\0"
|
||||
#define RC_VERSION_ORIGINAL_FILE_NAME "iiscompressionCA.dll\0"
|
||||
#define RC_VERSION_FILE_DESCRIPTION "IIS Compression Schemes Custom Action DLL\0"
|
||||
|
||||
#include <bldver.rc>
|
|
@ -0,0 +1,130 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" DefaultTargets="Build" InitialTargets="EnsureWixToolsetInstalled" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(ProjectDir)..\build\submodule.props" Condition="Exists('$(ProjectDir)..\build\submodule.props')" />
|
||||
<Import Project="$(IIS-Common)build\versions.props" Condition="Exists('$(IIS-Common)build\versions.props')" />
|
||||
<Import Project="$(IIS-Common)build\settings.props" Condition="Exists('$(IIS-Common)build\settings.props')" />
|
||||
<Import Project="$(IIS-Common)build\sign.props" Condition="Exists('$(IIS-Common)build\sign.props')" />
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="avoid_restart.cpp" />
|
||||
<ClCompile Include="iiscompressionCA.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(IIS-Common)lib\CommonLib.vcxproj">
|
||||
<Project>{b54a8f61-60de-4ad9-87ca-d102f230678e}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="$(IIS-Setup)iisca\lib\iisca.vcxproj">
|
||||
<Project>{7324770c-0871-4d73-be3d-5e2f3e9e1b1e}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="iiscompressionCA.def" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="iiscompressionCA.rc">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IIS-Common)version;</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IIS-Common)version;</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IIS-Common)version;</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IIS-Common)version;</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ResourceCompilePreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ResourceCompilePreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ResourceCompilePreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ResourceCompilePreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{4098A5FB-D3D2-4DB1-9F37-BAE0E08F80F2}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>iiscompressionCA</RootNamespace>
|
||||
<ProjectName>iiscompressionCA</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup>
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<PropertyGroup>
|
||||
<AdditionalIncludeDirectories>$(IIS-Common)version;$(IIS-Common)Include;$(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderOutputFile>$(IntDir)precomp.pch</PrecompiledHeaderOutputFile>
|
||||
<OutDir>bin\$(Configuration)\$(PlatformTarget)\</OutDir>
|
||||
<IntDir>obj\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(IIS-Setup)iisca\lib;$(WIX)sdk\$(WixPlatformToolset)\inc;$(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>httpapi.lib;shlwapi.lib;ahadmin.lib;xmllite.lib;msi.lib;dutil.lib;wcautil.lib;Version.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>$(TargetName).def</ModuleDefinitionFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>$(VC_ReferencesPath_x86);$(WindowsSDK_LibraryPath)\$(PlatformTarget);$(WIX)sdk\$(WixPlatformToolset)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<GenerateDebugInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">DebugFull</GenerateDebugInformation>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<SupportJustMyCode Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</SupportJustMyCode>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SupportJustMyCode Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</SupportJustMyCode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>$(VC_ReferencesPath_x64);$(WindowsSDK_LibraryPath)\$(PlatformTarget);$(WIX)sdk\$(WixPlatformToolset)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<TargetMachine>Machinex64</TargetMachine>
|
||||
<GenerateDebugInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">DebugFull</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<Import Project="$(WixNativeCATargetsPath)" Condition=" '$(WixNativeCATargetsPath)' != '' " />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.NativeCA.targets" Condition=" '$(WixNativeCATargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.NativeCA.targets') " />
|
||||
<Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixNativeCATargetsImported)' != 'true' ">
|
||||
<Error Text="The WiX Toolset v3.11 (or newer) build tools must be installed to build this project. To download the WiX Toolset, see http://wixtoolset.org/releases/" />
|
||||
</Target>
|
||||
<Target Name="EnsureImportsExist" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project is trying to import a missing file: {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('$(ProjectDir)..\build\submodule.props')" Text="$([System.String]::Format('$(ErrorText)', '$(ProjectDir)..\build\submodule.props'))" />
|
||||
<Error Condition="!Exists('$(IIS-Common)build\versions.props')" Text="$([System.String]::Format('$(ErrorText)', '$(IIS-Common)build\versions.props'))" />
|
||||
<Error Condition="!Exists('$(IIS-Common)build\settings.props')" Text="$([System.String]::Format('$(ErrorText)', '$(IIS-Common)build\settings.props'))" />
|
||||
<Error Condition="!Exists('$(IIS-Common)build\sign.props')" Text="$([System.String]::Format('$(ErrorText)', '$(IIS-Common)build\sign.props'))" />
|
||||
<Error Condition="!Exists('$(IIS-Common)build\copy-outputs.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(IIS-Common)build\copy-outputs.targets'))" />
|
||||
<Error Condition="!Exists('$(UserProfile)\.nuget\packages\microsoft.visualstudioeng.microbuild.core\$(MicroBuildVersion)\build\Microsoft.VisualStudioEng.MicroBuild.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(UserProfile)\.nuget\packages\microsoft.visualstudioeng.microbuild.core\$(MicroBuildVersion)\build\Microsoft.VisualStudioEng.MicroBuild.Core.targets'))" />
|
||||
</Target>
|
||||
<Import Project="$(UserProfile)\.nuget\packages\microsoft.visualstudioeng.microbuild.core\$(MicroBuildVersion)\build\Microsoft.VisualStudioEng.MicroBuild.Core.targets" Condition="Exists('$(UserProfile)\.nuget\packages\microsoft.visualstudioeng.microbuild.core\$(MicroBuildVersion)\build\Microsoft.VisualStudioEng.MicroBuild.Core.targets')" />
|
||||
<Import Project="$(IIS-Common)build\copy-outputs.targets" Condition="Exists('$(IIS-Common)build\copy-outputs.targets')" />
|
||||
</Project>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="VisualCppTools.Community.VS2017Layout" version="14.11.25547" developmentDependency="true" />
|
||||
</packages>
|
|
@ -1 +1 @@
|
|||
Subproject commit 7d690a2135dfdac884a82b340f7114ecf27fc285
|
||||
Subproject commit c5708ba41b6ee4cadda1e9623d7ccd291315dbdf
|
|
@ -0,0 +1 @@
|
|||
Subproject commit c11b9dc044d66294a8bc03e0369202ba6c6cd224
|
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" InitialTargets="EnsureWixToolsetInstalled" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(ProjectDir)..\build\submodule.props" Condition="Exists('$(ProjectDir)..\build\submodule.props')" />
|
||||
<Import Project="$(IIS-Common)build\settings.props" Condition="Exists('$(IIS-Common)build\settings.props')" />
|
||||
<Import Project="$(IIS-Common)build\versions.props" Condition="Exists('$(IIS-Common)build\versions.props')" />
|
||||
<Import Project="$(IIS-Setup)build\wix-versions.props" Condition="Exists('$(IIS-Setup)build\wix-versions.props')" />
|
||||
<Import Project="$(IIS-Common)build\sign.props" Condition="Exists('$(IIS-Common)build\sign.props')" />
|
||||
<PropertyGroup>
|
||||
<ProductVersion>3.10</ProductVersion>
|
||||
<ProjectGuid>1ABF68C6-4E3D-4C36-AB9E-3AD64F9FD744</ProjectGuid>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<OutputType>Package</OutputType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Platform)' == 'x86' ">
|
||||
<OutputName>iiscompression_x86</OutputName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Platform)' == 'x64' ">
|
||||
<OutputName>iiscompression_amd64</OutputName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(SignType)' != '' ">
|
||||
<SignOutput>True</SignOutput>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<WixVariables>Platform=($Platform);$(WixVariables);</WixVariables>
|
||||
<OutputPath>$(SolutionDir)bin\$(Configuration)\$(Platform)\</OutputPath>
|
||||
<OutDir>$(OutputPath)</OutDir>
|
||||
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
|
||||
<IncludeSearchPaths>$(IncludeSearchPaths);$(IntermediateOutputPath);$(IIS-Setup)</IncludeSearchPaths>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<DefineConstants>Debug;$(DefineConstants)</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="iiscompression.wxs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="bitmaps" />
|
||||
<Folder Include="license" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="bitmaps\bannrbmp.bmp" />
|
||||
<Content Include="bitmaps\iiscompression.ico" />
|
||||
<Content Include="bitmaps\dlgbmp.bmp" />
|
||||
<Content Include="license\License.rtf" />
|
||||
<Content Include="packages.config" />
|
||||
<Content Include="readme.htm" />
|
||||
<Content Include="ThirdPartyNotices.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WixExtension Include="WixUIExtension">
|
||||
<HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath>
|
||||
<Name>WixUIExtension</Name>
|
||||
</WixExtension>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="$(IIS-Setup)iisca\wix\setupstrings.wxl">
|
||||
<Link>setupstrings.wxl</Link>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(ProjectDir)..\CustomAction\iiscompressionCA.vcxproj">
|
||||
<Name>iiscompressionCA</Name>
|
||||
<Project>{4098a5fb-d3d2-4db1-9f37-bae0e08f80f2}</Project>
|
||||
<Private>True</Private>
|
||||
<DoNotHarvest>True</DoNotHarvest>
|
||||
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
|
||||
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' " />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets') " />
|
||||
<Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
|
||||
<Error Text="The WiX Toolset v3.11 (or newer) build tools must be installed to build this project. To download the WiX Toolset, see http://wixtoolset.org/releases/" />
|
||||
</Target>
|
||||
<Target Name="BeforeBuild">
|
||||
<CreateProperty Condition="$(IIS-Setup) != ''" Value="IIS-Setup=$(IIS-Setup);$(DefineConstants)">
|
||||
<Output TaskParameter="Value" PropertyName="DefineConstants" />
|
||||
</CreateProperty>
|
||||
</Target>
|
||||
<Target Name="EnsureImportsExist" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project is trying to import a missing file: {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('$(ProjectDir)..\build\submodule.props')" Text="$([System.String]::Format('$(ErrorText)', '$(ProjectDir)..\build\submodule.props'))" />
|
||||
<Error Condition="!Exists('$(IIS-Common)build\settings.props')" Text="$([System.String]::Format('$(ErrorText)', '$(IIS-Common)build\settings.props'))" />
|
||||
<Error Condition="!Exists('$(IIS-Common)build\versions.props')" Text="$([System.String]::Format('$(ErrorText)', '$(IIS-Common)build\versions.props'))" />
|
||||
<Error Condition="!Exists('$(IIS-Setup)build\wix-versions.props')" Text="$([System.String]::Format('$(ErrorText)', '$(IIS-Setup)build\wix-versions.props'))" />
|
||||
<Error Condition="!Exists('$(IIS-Common)build\sign.props')" Text="$([System.String]::Format('$(ErrorText)', '$(IIS-Common)build\sign.props'))" />
|
||||
<Error Condition="!Exists('$(UserProfile)\.nuget\packages\microsoft.visualstudioeng.microbuild.core\$(MicroBuildVersion)\build\Microsoft.VisualStudioEng.MicroBuild.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(UserProfile)\.nuget\packages\microsoft.visualstudioeng.microbuild.core\$(MicroBuildVersion)\build\Microsoft.VisualStudioEng.MicroBuild.Core.targets'))" />
|
||||
</Target>
|
||||
<Import Project="$(UserProfile)\.nuget\packages\microsoft.visualstudioeng.microbuild.core\$(MicroBuildVersion)\build\Microsoft.VisualStudioEng.MicroBuild.Core.targets" Condition="Exists('$(UserProfile)\.nuget\packages\microsoft.visualstudioeng.microbuild.core\$(MicroBuildVersion)\build\Microsoft.VisualStudioEng.MicroBuild.Core.targets')" />
|
||||
</Project>
|
|
@ -0,0 +1,44 @@
|
|||
THIRD PARTY NOTICES
|
||||
|
||||
This file is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft licenses the Third Party IP to you under the licensing terms for the Microsoft product. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise.
|
||||
|
||||
|
||||
**************
|
||||
MIT Licensed Files
|
||||
The following files were originally licensed under the MIT License. The notices and license text below are provided for informational/attribution purposes only and are not the license terms under which Microsoft distributes this Third Party Software.
|
||||
|
||||
|
||||
Google/brotli
|
||||
Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
|
||||
|
||||
|
||||
MIT License
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
**************
|
||||
Zlib Licensed Files
|
||||
|
||||
The following Files were Originally Licensed under the Zlib License. The notices and license text below are provided for informational/attribution purposes only and are not the license terms under which Microsoft distributes these Third Party Materials.
|
||||
|
||||
Zlib
|
||||
Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
|
||||
|
||||
|
||||
Zlib License
|
||||
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
Jean-loup Gailly Mark Adler
|
||||
jloup@gzip.org madler@alumni.caltech.edu
|
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 5.8 KiB |
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 20 KiB |
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 204 KiB |
|
@ -0,0 +1,270 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
|
||||
<!--
|
||||
IIS zlib and brotli Compression schemes setup
|
||||
-->
|
||||
|
||||
<?define Codepage = "1252" ?>
|
||||
<?define IisCompressionRoot=..\ ?>
|
||||
<?define ProductCode="*" ?>
|
||||
<?define UpgradeCode="AE9D426D-FAFB-4A57-953F-75A6B765936A" ?>
|
||||
|
||||
<!-- Version number -->
|
||||
<?define Version = "1.0" ?>
|
||||
<?define MsiVersion = "$(var.Version).$(var.BLDNUMMAJOR)" ?>
|
||||
<?define ProductShortName="IIS Compression" ?>
|
||||
<?define IISZlibCompressionScheme="IISZlib" ?>
|
||||
<?define IISBrotliCompressionScheme="IISBrotli" ?>
|
||||
|
||||
<?include $(var.IisCompressionRoot)IIS-Setup\include.wxi ?>
|
||||
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Product Id="$(var.ProductCode)"
|
||||
Name="!(loc.IisCompressionProductName)"
|
||||
Manufacturer="!(loc.Manufacturer)"
|
||||
Version="$(var.MsiVersion)"
|
||||
Language="!(loc.Language)"
|
||||
Codepage="$(var.Codepage)"
|
||||
UpgradeCode="$(var.UpgradeCode)" >
|
||||
|
||||
<Package Id="*"
|
||||
Description="!(loc.IisCompressionProductName)"
|
||||
Manufacturer="!(loc.Manufacturer)"
|
||||
Compressed="yes"
|
||||
InstallPrivileges="elevated"
|
||||
InstallerVersion="400"
|
||||
Platform="$(var.PlatformValue)" />
|
||||
|
||||
<Media Id="1" Cabinet="iiscompression.cab" EmbedCab="yes" CompressionLevel="high"/>
|
||||
|
||||
<WixVariable Id="WixUILicenseRtf" Value=".\license\license.rtf" />
|
||||
|
||||
<!-- include the standard app searches -->
|
||||
<?include $(var.IisCompressionRoot)IIS-Setup\appsearch\appsearch.wxi ?>
|
||||
|
||||
<!-- make patching UI go from welcome to ready to repair -->
|
||||
<?include $(var.IisCompressionRoot)IIS-Setup\iisca\wix3\FixPatchingBehavior.wxi ?>
|
||||
|
||||
<!-- Properties that show up under Control Panel\Programs and Features\More Columns -->
|
||||
<Property Id="ARPCONTACT">Microsoft Corporation</Property>
|
||||
<Property Id="ARPPRODUCTICON" Value="iiscompression.ico" />
|
||||
<Icon Id="iiscompression.ico" SourceFile="Bitmaps\iiscompression.ico" />
|
||||
|
||||
<Upgrade Id="$(var.UpgradeCode)">
|
||||
<UpgradeVersion OnlyDetect="no" Property="OLDERVERSIONFOUND" Maximum="$(var.MsiVersion)" IncludeMaximum="no" MigrateFeatures="yes" />
|
||||
<UpgradeVersion OnlyDetect="yes" Property="DUPLICATEVERSIONFOUND" Minimum="$(var.MsiVersion)" Maximum="$(var.MsiVersion)" IncludeMinimum="yes" IncludeMaximum="yes" />
|
||||
<UpgradeVersion OnlyDetect="yes" Property="NEWERVERSIONFOUND" Minimum="$(var.MsiVersion)" IncludeMinimum="no" />
|
||||
</Upgrade>
|
||||
|
||||
<Condition Message="!(loc.DuplicateVersionFound)">
|
||||
(NOT DUPLICATEVERSIONFOUND) OR Installed
|
||||
</Condition>
|
||||
|
||||
<Condition Message="!(loc.NewerVersionFound)">
|
||||
(NOT NEWERVERSIONFOUND) OR Installed
|
||||
</Condition>
|
||||
|
||||
<!-- Require the user be an admin to install -->
|
||||
<Condition Message="!(loc.AdminRequired)">Privileged</Condition>
|
||||
|
||||
<!-- Prevent install of 32 bit product on 64 bit machine -->
|
||||
<?if $(var.Platform) = "x86" ?>
|
||||
<Condition Message="!(loc.LaunchCondition_64BIT)">
|
||||
<![CDATA[Installed Or NOT VersionNT64]]>
|
||||
</Condition>
|
||||
<?endif ?>
|
||||
|
||||
<!-- Per machine only if administrator, per user if no administrator -->
|
||||
<Property Id="ALLUSERS">2</Property>
|
||||
|
||||
<!-- Detect IIS version and require 7.5 -->
|
||||
<Condition Message="!(loc.IIS75OrGreater)">
|
||||
<![CDATA[Installed OR (VersionNT >= 601)]]>
|
||||
</Condition>
|
||||
|
||||
<!-- Require core web server and w3svc -->
|
||||
<Condition Message="!(loc.CoreWebW3SVC)">
|
||||
((IISCOREWEBENGINEINSTALLED = "#1") AND (IISW3SVCINSTALLED = "#1")) OR Installed
|
||||
</Condition>
|
||||
|
||||
<!-- Directory Structure and Component Definitions -->
|
||||
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
|
||||
<!-- Platform specific core module -->
|
||||
|
||||
<Directory Id="$(var.ProgramFilesFolder)">
|
||||
<Directory Id="IISModuleDirectory" Name="IIS">
|
||||
<Directory Id="INSTALLLOCATION" ShortName="IISComp" Name="IIS Compression">
|
||||
<Component Id="IisZlib" Guid="B60CA37C-79E9-4ECF-BDF2-1EA3504D3A83" Win64="$(var.IsWin64)">
|
||||
<File Id="IisZlibDll"
|
||||
Name="iiszlib.dll"
|
||||
Source="$(var.IisCompressionRoot)bin\$(var.Configuration)\$(var.Platform)\iiszlib.dll"
|
||||
DiskId="1"
|
||||
Vital="yes"
|
||||
KeyPath="yes" />
|
||||
<RegistryKey Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\EventLog\Application\$(var.IISZlibCompressionScheme)">
|
||||
<RegistryValue Name="EventMessageFile" Type="expandable" Value="[#IisZlibDll]"/>
|
||||
<RegistryValue Name="TypesSupported" Type="integer" Value="7"/>
|
||||
</RegistryKey>
|
||||
</Component>
|
||||
<Component Id="IisBrotli" Guid="3C2A0748-058E-46DB-B8C8-F1FF3BFB4C42" Win64="$(var.IsWin64)">
|
||||
<File Id="IisBrotliDll"
|
||||
Name="iisbrotli.dll"
|
||||
Source="$(var.IisCompressionRoot)bin\$(var.Configuration)\$(var.Platform)\iisbrotli.dll"
|
||||
DiskId="1"
|
||||
Vital="yes" />
|
||||
<RegistryKey Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\EventLog\Application\$(var.IISBrotliCompressionScheme)">
|
||||
<RegistryValue Name="EventMessageFile" Type="expandable" Value="[#IisBrotliDll]"/>
|
||||
<RegistryValue Name="TypesSupported" Type="integer" Value="7"/>
|
||||
</RegistryKey>
|
||||
</Component>
|
||||
<Component Id="License" Guid="399719BA-8F33-4B40-8B24-290946BA18D7" Win64="$(var.IsWin64)">
|
||||
<File Id="LicenseFile"
|
||||
ShortName="license.rtf"
|
||||
Name="iiscompression_license.rtf"
|
||||
Source=".\license\license.rtf"
|
||||
DiskId="1"
|
||||
Vital="yes"/>
|
||||
</Component>
|
||||
<Component Id="ThirdPartyNotices" Guid="D1CCF0C2-F183-4B17-A3BB-B0C3BF8B09F5" Win64="$(var.IsWin64)">
|
||||
<File Id="ThirdPartyNoticesFile"
|
||||
ShortName="TPN.txt"
|
||||
Name="iiscompression_ThirdPartyNotices.txt"
|
||||
Source=".\ThirdPartyNotices.txt"
|
||||
DiskId="1"
|
||||
Vital="yes"/>
|
||||
</Component>
|
||||
<Component Id="Readme" Guid="4024AAD1-6345-4F0D-B434-953B779825C0" Win64="$(var.IsWin64)">
|
||||
<File Id="ReadmeFile"
|
||||
ShortName="readme.htm"
|
||||
Name="iiscompression_readme.htm"
|
||||
Source=".\readme.htm"
|
||||
DiskId="1"
|
||||
Vital="yes"/>
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<!-- Discoverability-->
|
||||
|
||||
<Component Id="DiscoverabilityKey" Guid="18765706-E98E-43EF-8F02-0F877679CF75" Win64="$(var.IsWin64)">
|
||||
<RegistryKey Root="HKLM" Key="$(var.DiscoverabilityKeyRoot)\$(var.ProductShortName)">
|
||||
<RegistryKey Key="$(var.IISZlibCompressionScheme)">
|
||||
<RegistryValue Type="integer" Name="Install" Value="1" />
|
||||
<RegistryValue Type="string" Name="Version" Value="$(var.MsiVersion)" />
|
||||
</RegistryKey>
|
||||
<RegistryKey Key="$(var.IISBrotliCompressionScheme)">
|
||||
<RegistryValue Type="integer" Name="Install" Value="1" />
|
||||
<RegistryValue Type="string" Name="Version" Value="$(var.MsiVersion)" />
|
||||
</RegistryKey>
|
||||
</RegistryKey>
|
||||
</Component>
|
||||
|
||||
<!-- WOW64 Support -->
|
||||
|
||||
<?if $(var.Platform) = "x64" ?>
|
||||
|
||||
<Directory Id="ProgramFilesFolder">
|
||||
<Directory Id="IISModuleDirectory32" Name="IIS">
|
||||
<Directory Id="INSTALLLOCATION32" ShortName="IISComp" Name="IIS Compression" SourceName="WowOnly">
|
||||
<Component Id="IisZlib32" Guid="FBDB630C-D614-4523-910E-257E41E5F83D" Win64="no">
|
||||
<File Id="IisZlibDll32"
|
||||
Name="iiszlib.dll"
|
||||
Source="$(var.IisCompressionRoot)bin\$(var.Configuration)\x86\iiszlib.dll"
|
||||
DiskId="1"
|
||||
Vital="yes" />
|
||||
</Component>
|
||||
<Component Id="IisBrotli32" Guid="72A086DB-7D00-466D-81A1-84D07388E023" Win64="no">
|
||||
<File Id="IisBrotliDll32"
|
||||
Name="iisbrotli.dll"
|
||||
Source="$(var.IisCompressionRoot)bin\$(var.Configuration)\x86\iisbrotli.dll"
|
||||
DiskId="1"
|
||||
Vital="yes" />
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<!-- Discoverability WOW64 -->
|
||||
|
||||
<Component Id="DiscoverabilityKeyWow" Guid="1E9CDB5F-1E85-4F6D-8243-BFA63A5F71B9" Win64="no">
|
||||
<RegistryKey Root="HKLM" Key="$(var.DiscoverabilityKeyRoot)\$(var.ProductShortName)">
|
||||
<RegistryKey Key="$(var.IISZlibCompressionScheme)">
|
||||
<RegistryValue Type="integer" Name="Install" Value="1" />
|
||||
<RegistryValue Type="string" Name="Version" Value="$(var.MsiVersion)" />
|
||||
</RegistryKey>
|
||||
<RegistryKey Key="$(var.IISBrotliCompressionScheme)">
|
||||
<RegistryValue Type="integer" Name="Install" Value="1" />
|
||||
<RegistryValue Type="string" Name="Version" Value="$(var.MsiVersion)" />
|
||||
</RegistryKey>
|
||||
</RegistryKey>
|
||||
</Component>
|
||||
|
||||
<?endif ?>
|
||||
|
||||
</Directory>
|
||||
|
||||
<!-- Feature Definition -->
|
||||
|
||||
<Feature Id="IisCompressionFeature" Title="!(loc.IisCompressionTitle)" Description="!(loc.IisCompressionDescription)" Level="1">
|
||||
<ComponentRef Id="IisZlib"/>
|
||||
<ComponentRef Id="IisBrotli"/>
|
||||
<ComponentRef Id="License"/>
|
||||
<ComponentRef Id="ThirdPartyNotices"/>
|
||||
<ComponentRef Id="Readme"/>
|
||||
<ComponentRef Id="DiscoverabilityKey"/>
|
||||
<?if $(var.Platform)= "x64" ?>
|
||||
<ComponentRef Id="IisZlib32"/>
|
||||
<ComponentRef Id="IisBrotli32"/>
|
||||
<ComponentRef Id="DiscoverabilityKeyWow"/>
|
||||
<?endif ?>
|
||||
</Feature>
|
||||
|
||||
<!-- User Interface -->
|
||||
|
||||
<UIRef Id="WixUI_Minimal"/>
|
||||
<UIRef Id="WixUI_ErrorProgressText"/>
|
||||
|
||||
<UI>
|
||||
<DialogRef Id="WelcomeEulaDlg"/>
|
||||
|
||||
<!--Custom errors specific to shared configuration detection -->
|
||||
<Error Id="30001">!(loc.Error30001)</Error>
|
||||
<Error Id="30002">!(loc.Error30002)</Error>
|
||||
<!-- Require WAS and WMSVC be stopped to avoid restarts -->
|
||||
<Error Id="30003">!(loc.WebServicesRunning)</Error>
|
||||
</UI>
|
||||
|
||||
<!-- Specific custom actions for this project. -->
|
||||
|
||||
<CustomAction BinaryKey="IISCustomActionDll"
|
||||
Id="RegisterCompressionSchemes"
|
||||
DllEntry="RegisterCompressionSchemesCA"
|
||||
Execute="deferred"
|
||||
Return="check"
|
||||
Impersonate="no"/>
|
||||
|
||||
<CustomAction BinaryKey="IISCustomActionDll"
|
||||
Id="CleanupCompressionSchemes"
|
||||
DllEntry="CleanupCompressionSchemesCA"
|
||||
Execute="deferred"
|
||||
Return="check"
|
||||
Impersonate="no"/>
|
||||
|
||||
<InstallExecuteSequence>
|
||||
<AppSearch Before="LaunchConditions" />
|
||||
<Custom Action="RegisterCompressionSchemes" After="InstallFiles">NOT Installed</Custom>
|
||||
<Custom Action="CleanupCompressionSchemes" Before="RemoveFiles">(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>
|
||||
<LaunchConditions After="FindRelatedProducts" />
|
||||
<MigrateFeatureStates />
|
||||
<RemoveExistingProducts After="InstallFinalize"/>
|
||||
</InstallExecuteSequence>
|
||||
</Product>
|
||||
|
||||
<Fragment>
|
||||
<!-- Reference Output by project name -->
|
||||
<Binary Id="IISCustomActionDll" SourceFile="$(var.iiscompressionCA.TargetPath)"/>
|
||||
</Fragment>
|
||||
</Wix>
|
|
@ -0,0 +1,118 @@
|
|||
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Tahoma;}{\f1\fswiss\fprq2\fcharset0 Trebuchet MS;}{\f2\fnil\fcharset0 Calibri;}{\f3\fnil\fcharset2 Symbol;}}
|
||||
{\colortbl ;\red0\green0\blue255;\red0\green0\blue0;}
|
||||
{\*\listtable
|
||||
{\list\listhybrid
|
||||
{\listlevel\levelnfc0\leveljc0\levelstartat1{\leveltext\'02\'00.;}{\levelnumbers\'01;}\jclisttab\tx363}
|
||||
{\listlevel\levelnfc4\leveljc0\levelstartat1{\leveltext\'02\'01.;}{\levelnumbers\'01;}\jclisttab\tx363}\listid1 }
|
||||
{\list\listhybrid
|
||||
{\listlevel\levelnfc23\leveljc0\levelstartat1{\leveltext\'01\'B7;}{\levelnumbers;}\f3\jclisttab\tx0}
|
||||
{\listlevel\levelnfc4\leveljc0\levelstartat2{\leveltext\'02\'01.;}{\levelnumbers\'01;}\jclisttab\tx363}\listid2 }
|
||||
{\list\listhybrid
|
||||
{\listlevel\levelnfc0\leveljc0\levelstartat1{\leveltext\'02\'00.;}{\levelnumbers\'01;}\jclisttab\tx720}
|
||||
{\listlevel\levelnfc4\leveljc0\levelstartat1{\leveltext\'02\'01.;}{\levelnumbers\'01;}\jclisttab\tx720}
|
||||
{\listlevel\levelnfc2\leveljc0\levelstartat1{\leveltext\'02\'02.;}{\levelnumbers\'01;}\jclisttab\tx720}\listid3 }
|
||||
{\list\listhybrid
|
||||
{\listlevel\levelnfc0\leveljc0\levelstartat1{\leveltext\'02\'00.;}{\levelnumbers\'01;}\jclisttab\tx0}
|
||||
{\listlevel\levelnfc4\leveljc0\levelstartat1{\leveltext\'02\'01.;}{\levelnumbers\'01;}\jclisttab\tx0}\listid4 }}
|
||||
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}}
|
||||
{\stylesheet{ Normal;}{\s1 heading 1;}{\s2 heading 2;}{\s3 heading 3;}}
|
||||
{\*\generator Riched20 10.0.14393}\viewkind4\uc1
|
||||
\pard\nowidctlpar\sb120\sa120\b\f0\fs20 MICROSOFT SOFTWARE LICENSE TERMS\par
|
||||
|
||||
\pard\brdrb\brdrs\brdrw10\brsp20 \nowidctlpar\sb120\sa120 MICROSOFT IIS COMPRESSION\par
|
||||
|
||||
\pard\nowidctlpar\sb120\sa120\b0 These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. They apply to the software named above. The terms also apply to any Microsoft services or updates for the software, except to the extent those have different terms.\b\par
|
||||
|
||||
\pard\brdrt\brdrs\brdrw10\brsp20 \nowidctlpar\sb120\sa120\caps If you comply with these license terms, you have the rights below.\par
|
||||
|
||||
\pard
|
||||
{\pntext\f0 1.\tab}{\*\pn\pnlvlbody\pnf0\pnindent360\pnstart1\pndec{\pntxta.}}
|
||||
\nowidctlpar\s1\fi-360\li360\sb120\caps0 INSTALLATION AND USE RIGHTS. \par
|
||||
|
||||
\pard\nowidctlpar\fi-360\li720\sa120\b0 You may install and use any number of copies of the software on your devices. \par
|
||||
|
||||
\pard\widctlpar\s1\fi-357\li357\sb120\sa120\b 2.\tab THIRD PARTY COMPONENTS. \b0 The software may include third party components with separate legal notices or governed by other agreements, as may be described in the ThirdPartyNotices file(s) accompanying the software.\par
|
||||
\b 3.\tab DISTRIBUTABLE CODE. \b0 The software contains code that you are permitted to distribute in applications you develop as described in this Section (the \ldblquote Distributable Code\rdblquote ). (For this Section the term \ldblquote distribution\rdblquote also means deployment of your applications for third parties to access over the Internet.)\b\par
|
||||
|
||||
\pard
|
||||
{\listtext\f0 a.\tab}\jclisttab\tx363\ls1\ilvl1\nowidctlpar\s3\fi-363\li720\sb120\sa120\tx2610 Right to Use and Distribute. \par
|
||||
|
||||
\pard
|
||||
{\listtext\f0\u10625?\tab}\ls2\widctlpar\fi-360\li1080\b0\lang1036 You may copy an distribute the object code form of the software.\line\lang1033\par
|
||||
{\listtext\f0 1\tab}Third Party Distribution. You may permit distributors of your applications to copy and distribute the Distributable Code as part of those applications.\par
|
||||
|
||||
\pard
|
||||
{\listtext\f0 b.\tab}\jclisttab\tx363\ls2\ilvl1\nowidctlpar\s3\fi-363\li720\sb120\sa120\tx2610\b Distribution Requirements. \b0 For any Distributable Code you distribute, you must\b\par
|
||||
|
||||
\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent360{\pntxtb\'B7}}\nowidctlpar\fi-358\li1168\sb120\sa120\b0 add significant primary functionality to it in your applications;\par
|
||||
{\pntext\f3\'B7\tab}require distributors and external end users to agree to terms that protect the Distributable Code at least as much as this agreement; and,\par
|
||||
{\pntext\f3\'B7\tab}indemnify, defend, and hold harmless Microsoft from any claims, including attorneys\rquote fees, related to the distribution or use of your applications, except to the extent that any claim is based solely on the Distributable Code.\par
|
||||
|
||||
\pard\nowidctlpar\s3\fi-363\li720\sb120\sa120\tx2610\b\f1 c.\tab\f0 Distribution Restrictions. \b0 You may not use Microsoft\rquote s trademarks in your applications\rquote names or branding in a way that suggests your applications come from or are endorsed by Microsoft; or modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that \par
|
||||
|
||||
\pard
|
||||
{\listtext\f0 i.\tab}\jclisttab\tx720\ls3\ilvl2\widctlpar\s3\fi-357\li1077\sb120\sa120\tx1077 the code be disclosed or distributed in source code form; or \par
|
||||
{\listtext\f0 ii.\tab}others have the right to modify it.\par
|
||||
|
||||
\pard\widctlpar\s1\fi-357\li357\sb120\sa120\b 4.\tab DATA. \par
|
||||
|
||||
\pard
|
||||
{\listtext\f0 a.\tab}\ls4\ilvl1\widctlpar\fi-360\li720 Data Collection. \b0 The software may collect information about you and your use of the software, and send that to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may opt-out of many of these scenarios, but not all, as described in the product documentation. There are also some features in the software that may enable you to collect data from users of your applications. If you use these features to enable data collection in your applications, you must comply with applicable law, including providing appropriate notices to users of your applications. You can learn more about data collection and use in the help documentation and the privacy statement at {{\field{\*\fldinst{HYPERLINK http://go.microsoft.com/fwlink/?LinkId=528096&clcid=0x409 }}{\fldrslt{http://go.microsoft.com/fwlink/?LinkId=528096&clcid=0x409\ul0\cf0}}}}\f0\fs20 . Your use of the software operates as your consent to these practices.\par
|
||||
|
||||
\pard\widctlpar\li720\par
|
||||
|
||||
\pard\widctlpar\fi-360\li720\b b.\tab Processing of Personal Data\b0 . To the extent Microsoft is a processor or subprocessor of personal data in connection with the software, Microsoft makes the commitments in the European Union General Data Protection Regulation Terms of the Online Services Terms to all customers effective May 25, 2018, at {{\field{\*\fldinst{HYPERLINK http://go.microsoft.com/?linkid=9840733 }}{\fldrslt{http://go.microsoft.com/?linkid=9840733\ul0\cf0}}}}\f0\fs20 .\par
|
||||
|
||||
\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120\b\caps 5.\tab Scope of License\caps0 .\b0 The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not\b\par
|
||||
|
||||
\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent363{\pntxtb\'B7}}\nowidctlpar\fi-363\li720\sb120\sa120\b0 work around any technical limitations in the software;\par
|
||||
{\pntext\f3\'B7\tab}reverse engineer, decompile or disassemble the software, or otherwise attempt to derive the source code for the software, except and to the extent required by third paty licensing terms governing use of certain open source components that may be included in the software;\par
|
||||
{\pntext\f3\'B7\tab}remove, minimize, block or modify any notices of Microsoft or its suppliers in the software; \par
|
||||
{\pntext\f3\'B7\tab}use the software in any way that is against the law; or\par
|
||||
{\pntext\f3\'B7\tab}share, publish, rent or lease the software, provide the software as a stand-alone offering for others to use, or transfer the software or this agreement to any third party.\par
|
||||
|
||||
\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120\b\caps 6.\tab Export Restrictions\caps0 .\b0 You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information on export restrictions, visit {{\field{\*\fldinst{HYPERLINK www.microsoft.com/exporting }}{\fldrslt{www.microsoft.com/exporting\ul0\cf0}}}}\f0\fs20 .\cf1\ul \cf0\ulnone \cf1\ul\b\par
|
||||
\cf0\ulnone\caps 7.\tab SUPPORT SERVICES.\caps0 \b0 Because this software is \ldblquote as is,\rdblquote we may not provide support services for it.\b\par
|
||||
\caps 8.\tab Entire Agreement.\b0\caps0 This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.\par
|
||||
|
||||
\pard\nowidctlpar\s1\fi-360\li360\sb120\sa120\b\caps 9.\tab Applicable Law\caps0 . \b0 If you acquired the software in the United States, Washington law applies to interpretation of and claims for breach of this agreement, and the laws of the state where you live apply to all other claims. If you acquired the software in any other country, its laws apply.\b\par
|
||||
|
||||
\pard\widctlpar\s1\fi-360\li360\sb120\sa120 10.\tab CONSUMER RIGHTS; REGIONAL VARIATIONS. \b0 This agreement describes certain legal rights. You may have other rights, including consumer rights, under the laws of your state or country. Separate and apart from your relationship with Microsoft, you may also have rights with respect to the party from which you acquired the software. This agreement does not change those other rights if the laws of your state or country do not permit it to do so. For example, if you acquired the software in one of the below regions, or mandatory country law applies, then the following provisions apply to you:\par
|
||||
|
||||
\pard
|
||||
{\pntext\f0 a)\tab}{\*\pn\pnlvlbody\pnf0\pnindent0\pnstart1\pnlcltr{\pntxta)}}
|
||||
\widctlpar\s2\fi-360\li717\sb120\sa120\b Australia. \b0 You have statutory guarantees under the Australian Consumer Law and nothing in this agreement is intended to affect those rights.\par
|
||||
{\pntext\f0 b)\tab}\b Canada. \b0 If you acquired this software in Canada, you may stop receiving updates by turning off the automatic update feature, disconnecting your device from the Internet (if and when you re-connect to the Internet, however, the software will resume checking for and installing updates), or uninstalling the software. The product documentation, if any, may also specify how to turn off updates for your specific device or software.\par
|
||||
|
||||
\pard\widctlpar\s2\fi-360\li717\sb120\sa120\b c)\tab Germany and Austria\b0 .\par
|
||||
|
||||
\pard\widctlpar\li717\sb120\sa120\b (i)\b0\tab\b Warranty\b0 . The software will perform substantially as described in any Microsoft materials that accompany it. However, Microsoft gives no contractual guarantee in relation to the software.\par
|
||||
\b (ii)\b0\tab\b Limitation of Liability\b0 . In case of intentional conduct, gross negligence, claims based on the Product Liability Act, as well as in case of death or personal or physical injury, Microsoft is liable according to the statutory law.\par
|
||||
|
||||
\pard\nowidctlpar\s1\li450\sb120\sa120 Subject to the foregoing clause (ii), Microsoft will only be liable for slight negligence if Microsoft is in breach of such material contractual obligations, the fulfillment of which facilitate the due performance of this agreement, the breach of which would endanger the purpose of this agreement and the compliance with which a party may constantly trust in (so-called "cardinal obligations"). In other cases of slight negligence, Microsoft will not be liable for slight negligence\b\caps\par
|
||||
|
||||
\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120 11.\tab Disclaimer of Warranty.\caps0 THE SOFTWARE IS LICENSED \ldblquote AS-IS.\rdblquote YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. \caps\par
|
||||
|
||||
\pard\widctlpar\s1\fi-357\li357\sb120\sa120 12.\tab Limitation on and Exclusion of Remedies and Damages. \caps0 YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.\par
|
||||
|
||||
\pard\nowidctlpar\li357\sb120\sa120\b0 This limitation applies to (a) anything related to the software, services, content (including code) on third party Internet sites, or third party applications; and (b) claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.\par
|
||||
|
||||
\pard\nowidctlpar\li360\sb120\sa120 It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your state or country may not allow the exclusion or limitation of incidental, consequential or other damages.\par
|
||||
|
||||
\pard\widctlpar\sb40\sa40\b Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French.\par
|
||||
Remarque : Ce logiciel \'e9tant distribu\'e9 au Qu\'e9bec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en fran\'e7ais.\par
|
||||
EXON\'c9RATION DE GARANTIE.\cf2\b0\lang1036\~\cf0\lang1033 Le logiciel vis\'e9 par une licence est offert \'ab tel quel \'bb. Toute utilisation de ce logiciel est \'e0 votre seule risque et p\'e9ril. Microsoft n\rquote accorde aucune autre garantie expresse. Vous pouvez b\'e9n\'e9ficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualit\'e9 marchande, d\rquote ad\'e9quation \'e0 un usage particulier et d\rquote absence de contrefa\'e7on sont exclues.\par
|
||||
\b LIMITATION DES DOMMAGES-INT\'c9R\'caTS ET EXCLUSION DE RESPONSABILIT\'c9 POUR LES DOMMAGES.\cf2\b0\lang1036\~\cf0\lang1033 Vous pouvez\cf2\lang1036 \cf0\lang1033 obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement \'e0 hauteur de 5,00 $ US. Vous ne pouvez pr\'e9tendre \'e0 aucune indemnisation pour les autres dommages, y compris les dommages sp\'e9ciaux, indirects ou accessoires et pertes de b\'e9n\'e9fices.\par
|
||||
Cette limitation concerne:\par
|
||||
|
||||
\pard\widctlpar\fi-363\li363\sb40\sa40\'b7\~\~\~\~\tab tout ce qui est reli\'e9 au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et\par
|
||||
\'b7\~\~\~\~\~les r\'e9clamations au titre de violation de contrat ou de garantie, ou au titre de responsabilit\'e9 stricte, de n\'e9gligence ou d\rquote une autre faute dans la limite autoris\'e9e par la loi en vigueur.\par
|
||||
|
||||
\pard\widctlpar\sb40\sa40 Elle s\rquote applique \'e9galement, m\'eame si Microsoft connaissait ou devrait conna\'eetre l\rquote\'e9ventualit\'e9 d\rquote un tel dommage. Si votre pays n\rquote autorise pas l\rquote exclusion ou la limitation de responsabilit\'e9 pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l\rquote exclusion ci-dessus ne s\rquote appliquera pas \'e0 votre \'e9gard.\par
|
||||
\b EFFET JURIDIQUE.\cf2\b0\lang1036\~\cf0\lang1033 Le pr\'e9sent contrat d\'e9crit certains droits juridiques. Vous pourriez avoir d\rquote autres droits pr\'e9vus par les lois de votre pays. Le pr\'e9sent contrat ne modifie pas les droits que vous conf\'e8rent les lois de votre pays si celles-ci ne le permettent pas.\par
|
||||
|
||||
\pard\widctlpar\sb120\sa120\par
|
||||
|
||||
\pard\sa200\sl276\slmult1\f2\fs22\lang9\par
|
||||
}
|
||||
|