From 212ba91a5c1eaf51c0205fc4422a92c027ffeaec Mon Sep 17 00:00:00 2001 From: Justin Kotalik Date: Tue, 9 Apr 2019 13:11:03 -0700 Subject: [PATCH] Make IISExpress not depend on jscript. (#9212) --- .../ANCMIISExpressV2/ancm_iis_expressv2.wxs | 160 +++++------------- .../CustomAction/aspnetcoreCA.cpp | 134 +++++++++++++++ .../CustomAction/aspnetcoreCA.def | 2 + src/Installers/Windows/UpgradeLog.htm | Bin 0 -> 45142 bytes 4 files changed, 178 insertions(+), 118 deletions(-) create mode 100644 src/Installers/Windows/UpgradeLog.htm diff --git a/src/Installers/Windows/AspNetCoreModule-Setup/ANCMIISExpressV2/ancm_iis_expressv2.wxs b/src/Installers/Windows/AspNetCoreModule-Setup/ANCMIISExpressV2/ancm_iis_expressv2.wxs index 49bae9932bf8..279bb8688a5b 100644 --- a/src/Installers/Windows/AspNetCoreModule-Setup/ANCMIISExpressV2/ancm_iis_expressv2.wxs +++ b/src/Installers/Windows/AspNetCoreModule-Setup/ANCMIISExpressV2/ancm_iis_expressv2.wxs @@ -366,66 +366,25 @@ Value=""[IISEXPRESS_INSTALL_PATH]appcmd.exe" set config -section:system.webServer/httpCompression /+"dynamicTypes.[\[]mimeType='text/event-stream',enabled='FALSE'[\]]" /apphostconfig:"[IISEXPRESS_APPHOST_CONFIG_TMP]""/> - - - - - - + Value="[IISEXPRESS_APPHOST_CONFIG]"/> + + + + + - - - + Property="CA_REMOVE_CONFIGSECTION" + Value="[IISEXPRESS_APPHOST_CONFIG]"/> + + + + - - - - - - - - + Property="CA_ADD_CONFIGSECTION32" + Value="[IISEXPRESS_APPHOST_CONFIG32]"/> + + + + + - - - + Value="[IISEXPRESS_APPHOST_CONFIG32]"/> + + + + @@ -600,7 +516,9 @@ - + + + @@ -610,6 +528,8 @@ + + @@ -640,7 +560,9 @@ - + + + @@ -650,6 +572,8 @@ + + diff --git a/src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.cpp b/src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.cpp index 48d826f72024..7727eeed5c26 100644 --- a/src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.cpp +++ b/src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.cpp @@ -2,6 +2,8 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. #include +#include +#include DECLARE_DEBUG_PRINT_OBJECT( "proxyCA.dll" ); @@ -40,6 +42,138 @@ struct COMPRESSION_MIME_TYPE COMPRESSION_MIME_TYPE gMimeTypes[] = { { L"text/event-stream", FALSE} }; +#define _HR_RET(hr) __pragma(warning(push)) \ + __pragma(warning(disable:26498)) /*disable constexpr warning */ \ + const HRESULT __hrRet = hr; \ + __pragma(warning(pop)) + +#define _GOTO_FINISHED() __pragma(warning(push)) \ + __pragma(warning(disable:26438)) /*disable avoid goto warning*/ \ + goto Finished \ + __pragma(warning(pop)) + +#define RETURN_IF_FAILED(hrr) do { _HR_RET(hrr); if (FAILED(__hrRet)) { hr = __hrRet; IISLogWrite(SETUP_LOG_SEVERITY_INFORMATION, L"Exiting hr=0x%x", hr); return hr; }} while (0, 0) + +// Modifies the configSections to include the aspNetCore section +UINT +WINAPI +AddConfigSection( + IN MSIHANDLE handle +) +{ + HRESULT hr; + CComPtr pXMLDoc; + VARIANT_BOOL variantResult; + IXMLDOMNode* webServerNode; + IXMLDOMNode* aspNetCoreNode; + IXMLDOMNode* tempNode; + IXMLDOMElement* element; + STRU customActionData; + + CComBSTR selectLanguage = SysAllocString(L"SelectionLanguage"); + CComBSTR xPath = SysAllocString(L"XPath"); + CComBSTR webServerPath = SysAllocString(L"//configuration/configSections/sectionGroup[@name=\"system.webServer\"]"); + CComBSTR aspNetCorePath = SysAllocString(L"//configuration/configSections/sectionGroup[@name=\"system.webServer\"]/section[@name=\"aspNetCore\"]"); + CComBSTR section = SysAllocString(L"section"); + CComBSTR name = SysAllocString(L"name"); + CComBSTR aspNetCore = SysAllocString(L"aspNetCore"); + CComBSTR overrideMode = SysAllocString(L"overrideModeDefault"); + CComBSTR allow = SysAllocString(L"Allow"); + + RETURN_IF_FAILED(CoInitialize(NULL)); + + hr = MsiUtilGetProperty(handle, TEXT("CustomActionData"), &customActionData); + + RETURN_IF_FAILED(hr = pXMLDoc.CoCreateInstance(__uuidof(DOMDocument60))); + + RETURN_IF_FAILED(hr = pXMLDoc->put_async(false)); + + RETURN_IF_FAILED(hr = pXMLDoc->load(CComVariant(customActionData.QueryStr()), &variantResult)); + + if (variantResult == VARIANT_FALSE) + { + return ERROR_SUCCESS; + } + + RETURN_IF_FAILED(hr = pXMLDoc->setProperty(selectLanguage, CComVariant(xPath))); + + RETURN_IF_FAILED(hr = pXMLDoc->selectSingleNode(webServerPath, &webServerNode)); + + RETURN_IF_FAILED(hr = pXMLDoc->selectSingleNode(aspNetCorePath, &aspNetCoreNode)); + + if (aspNetCoreNode == NULL) + { + RETURN_IF_FAILED(hr = pXMLDoc->createElement(section, &element)); + + RETURN_IF_FAILED(hr = element->setAttribute(name, CComVariant(aspNetCore))); + + RETURN_IF_FAILED(hr = element->setAttribute(overrideMode, CComVariant(allow))); + + RETURN_IF_FAILED(hr = webServerNode->appendChild(element, &tempNode)); + + RETURN_IF_FAILED(hr = pXMLDoc->save(CComVariant(customActionData.QueryStr()))); + } + + return ERROR_SUCCESS; +} + +// Modifies the configSections to remove the aspNetCore section +UINT +WINAPI +RemoveConfigSection( + IN MSIHANDLE handle +) +{ + HRESULT hr; + CComPtr pXMLDoc; + VARIANT_BOOL variantResult; + IXMLDOMNode* webServerNode; + IXMLDOMNode* aspNetCoreNode; + IXMLDOMNode* tempNode; + IXMLDOMElement* element; + STRU customActionData; + + CComBSTR selectLanguage = SysAllocString(L"SelectionLanguage"); + CComBSTR xPath = SysAllocString(L"XPath"); + CComBSTR webServerPath = SysAllocString(L"//configuration/configSections/sectionGroup[@name=\"system.webServer\"]"); + CComBSTR aspNetCorePath = SysAllocString(L"//configuration/configSections/sectionGroup[@name=\"system.webServer\"]/section[@name=\"aspNetCore\"]"); + CComBSTR section = SysAllocString(L"section"); + CComBSTR name = SysAllocString(L"name"); + CComBSTR aspNetCore = SysAllocString(L"aspNetCore"); + CComBSTR overrideMode = SysAllocString(L"overrideModeDefault"); + CComBSTR allow = SysAllocString(L"Allow"); + + RETURN_IF_FAILED(CoInitialize(NULL)); + + hr = MsiUtilGetProperty(handle, TEXT("CustomActionData"), &customActionData); + + RETURN_IF_FAILED(hr = pXMLDoc.CoCreateInstance(__uuidof(DOMDocument60))); + + RETURN_IF_FAILED(hr = pXMLDoc->put_async(false)); + + RETURN_IF_FAILED(hr = pXMLDoc->load(CComVariant(customActionData.QueryStr()), &variantResult)); + + if (variantResult == VARIANT_FALSE) + { + return ERROR_SUCCESS; + } + + RETURN_IF_FAILED(hr = pXMLDoc->setProperty(selectLanguage, CComVariant(xPath))); + + RETURN_IF_FAILED(hr = pXMLDoc->selectSingleNode(webServerPath, &webServerNode)); + + RETURN_IF_FAILED(hr = pXMLDoc->selectSingleNode(aspNetCorePath, &aspNetCoreNode)); + + if (aspNetCoreNode != NULL) + { + RETURN_IF_FAILED(webServerNode->removeChild(aspNetCoreNode, &tempNode)); + + RETURN_IF_FAILED(hr = pXMLDoc->save(CComVariant(customActionData.QueryStr()))); + } + + return ERROR_SUCCESS; +} + UINT WINAPI RegisterANCMCompressionCA( diff --git a/src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.def b/src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.def index 3518cde35f8d..ed516a4392b2 100644 --- a/src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.def +++ b/src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.def @@ -18,6 +18,8 @@ EXPORTS ExecuteCleanUpWindowsHotfixCA ScheduleRebootIfRequiredCA + AddConfigSection + RemoveConfigSection RegisterANCMCompressionCA CheckForServicesRunningCA diff --git a/src/Installers/Windows/UpgradeLog.htm b/src/Installers/Windows/UpgradeLog.htm new file mode 100644 index 0000000000000000000000000000000000000000..f327ebd6ec8c9266607c164392462b8d434be9e7 GIT binary patch literal 45142 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