diff --git a/patches/dwmapi-DwmGetTransportAttributes/0001-dwmapi-return-DWM_E_COMPOSITIONDISABLED-instead-of-ENOTIMPL-in-DwmGetTransportAttributes.patch b/patches/dwmapi-DwmGetTransportAttributes/0001-dwmapi-return-DWM_E_COMPOSITIONDISABLED-instead-of-ENOTIMPL-in-DwmGetTransportAttributes.patch
new file mode 100644
index 00000000..14a9f8ea
--- /dev/null
+++ b/patches/dwmapi-DwmGetTransportAttributes/0001-dwmapi-return-DWM_E_COMPOSITIONDISABLED-instead-of-ENOTIMPL-in-DwmGetTransportAttributes.patch
@@ -0,0 +1,43 @@
+From: Louis Lenders <xerox.xerox2000x@gmail.com>
+Subject: [PATCH 1/2] dwmapi: return DWM_E_COMPOSITIONDISABLED instead of E_NOTIMPL in DwmGetTransportAttributes
+Message-Id: <20181205121826.2124-1-xerox.xerox2000x@gmail.com>
+Date: Wed,  5 Dec 2018 13:18:25 +0100
+
+This versioh is with tests; 
+
+Signed-off-by: Louis Lenders <xerox.xerox2000x@gmail.com>
+---
+ dlls/dwmapi/dwmapi_main.c | 2 +-
+ include/winerror.h        | 2 ++
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/dlls/dwmapi/dwmapi_main.c b/dlls/dwmapi/dwmapi_main.c
+index c1ee067122..eb06d15507 100644
+--- a/dlls/dwmapi/dwmapi_main.c
++++ b/dlls/dwmapi/dwmapi_main.c
+@@ -146,7 +146,7 @@ HRESULT WINAPI DwmGetTransportAttributes(BOOL *pfIsRemoting, BOOL *pfIsConnected
+ {
+     FIXME("(%p, %p, %p) stub\n", pfIsRemoting, pfIsConnected, pDwGeneration);
+ 
+-    return E_NOTIMPL;
++    return DWM_E_COMPOSITIONDISABLED;
+ }
+ 
+ /**********************************************************************
+diff --git a/include/winerror.h b/include/winerror.h
+index d78c91e84e..a97b405c34 100644
+--- a/include/winerror.h
++++ b/include/winerror.h
+@@ -3090,6 +3090,8 @@ static inline HRESULT HRESULT_FROM_WIN32(unsigned int x)
+ #define WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY        _HRESULT_TYPEDEF_(0x80072f8e)
+ #define WININET_E_DECODING_FAILED                          _HRESULT_TYPEDEF_(0x80072f8f)
+ 
++#define DWM_E_COMPOSITIONDISABLED                          _HRESULT_TYPEDEF_(0x80263001)
++
+ #define D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS          _HRESULT_TYPEDEF_(0x887c0001)
+ #define D3D11_ERROR_FILE_NOT_FOUND                         _HRESULT_TYPEDEF_(0x887c0002)
+ #define D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS           _HRESULT_TYPEDEF_(0x887c0003)
+
+-- 
+2.17.1
+
diff --git a/patches/dwmapi-DwmGetTransportAttributes/0002-dwmapi-add-initial-tests.patch b/patches/dwmapi-DwmGetTransportAttributes/0002-dwmapi-add-initial-tests.patch
new file mode 100644
index 00000000..fe2dcbee
--- /dev/null
+++ b/patches/dwmapi-DwmGetTransportAttributes/0002-dwmapi-add-initial-tests.patch
@@ -0,0 +1,185 @@
+From: Louis Lenders <xerox.xerox2000x@gmail.com>
+Subject: [PATCH 2/2] dwampi: add initial tests
+Message-Id: <20181205121826.2124-2-xerox.xerox2000x@gmail.com>
+Date: Wed,  5 Dec 2018 13:18:26 +0100
+In-Reply-To: <20181205121826.2124-1-xerox.xerox2000x@gmail.com>
+References: <20181205121826.2124-1-xerox.xerox2000x@gmail.com>
+
+Signed-off-by: Louis Lenders <xerox.xerox2000x@gmail.com>
+---
+ configure                     |   1 +
+ configure.ac                  |   1 +
+ dlls/dwmapi/tests/Makefile.in |   5 ++
+ dlls/dwmapi/tests/dwmapi.c    | 108 ++++++++++++++++++++++++++++++++++
+ include/dwmapi.h              |   3 +
+ 5 files changed, 118 insertions(+)
+ create mode 100644 dlls/dwmapi/tests/Makefile.in
+ create mode 100644 dlls/dwmapi/tests/dwmapi.c
+
+diff --git a/configure b/configure
+index d00057ba2f..e1dde1813b 100755
+--- a/configure
++++ b/configure
+@@ -19392,6 +19392,7 @@ wine_fn_config_makefile dlls/dssenh/tests enable_tests
+ wine_fn_config_makefile dlls/dswave enable_dswave
+ wine_fn_config_makefile dlls/dswave/tests enable_tests
+ wine_fn_config_makefile dlls/dwmapi enable_dwmapi
++wine_fn_config_makefile dlls/dwmapi/tests enable_tests
+ wine_fn_config_makefile dlls/dwrite enable_dwrite
+ wine_fn_config_makefile dlls/dwrite/tests enable_tests
+ wine_fn_config_makefile dlls/dx8vb enable_dx8vb
+diff --git a/configure.ac b/configure.ac
+index 50cf9a0bd0..607a46f5a9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3255,6 +3255,7 @@ WINE_CONFIG_MAKEFILE(dlls/dssenh/tests)
+ WINE_CONFIG_MAKEFILE(dlls/dswave)
+ WINE_CONFIG_MAKEFILE(dlls/dswave/tests)
+ WINE_CONFIG_MAKEFILE(dlls/dwmapi)
++WINE_CONFIG_MAKEFILE(dlls/dwmapi/tests)
+ WINE_CONFIG_MAKEFILE(dlls/dwrite)
+ WINE_CONFIG_MAKEFILE(dlls/dwrite/tests)
+ WINE_CONFIG_MAKEFILE(dlls/dx8vb)
+diff --git a/dlls/dwmapi/tests/Makefile.in b/dlls/dwmapi/tests/Makefile.in
+new file mode 100644
+index 0000000000..f365f96c72
+--- /dev/null
++++ b/dlls/dwmapi/tests/Makefile.in
+@@ -0,0 +1,5 @@
++TESTDLL   = dwmapi.dll
++IMPORTS   = dwmapi
++
++C_SRCS = \
++	dwmapi.c
+diff --git a/dlls/dwmapi/tests/dwmapi.c b/dlls/dwmapi/tests/dwmapi.c
+new file mode 100644
+index 0000000000..fe5ee33996
+--- /dev/null
++++ b/dlls/dwmapi/tests/dwmapi.c
+@@ -0,0 +1,108 @@
++/*
++ * Unit tests for dwmapi
++ *
++ * Copyright 2018 Louis Lenders
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
++ *
++ */
++
++#include "dwmapi.h"
++
++#include "wine/test.h"
++
++static HRESULT (WINAPI *pDwmIsCompositionEnabled)(BOOL*);
++static HRESULT (WINAPI *pDwmEnableComposition)(UINT);
++static HRESULT (WINAPI *pDwmGetTransportAttributes)(BOOL*,BOOL*,DWORD*);
++
++BOOL dwmenabled;
++
++static void test_isdwmenabled(void)
++{
++    HRESULT res;
++    BOOL ret;
++
++    ret = -1;
++    res = pDwmIsCompositionEnabled(&ret);
++    ok((res == S_OK && ret == TRUE) || (res == S_OK && ret == FALSE), "got %x and %d\n", res, ret);
++
++    if (res == S_OK && ret == TRUE)
++        dwmenabled = TRUE;
++    else
++        dwmenabled = FALSE;
++    /*tested on win7 by enabling/disabling DWM service via services.msc*/
++    if (dwmenabled)
++    {
++        res = pDwmEnableComposition(DWM_EC_DISABLECOMPOSITION); /* try disable and reenable dwm*/
++        ok(res == S_OK, "got %x expected S_OK\n", res);
++
++        ret = -1;
++        res = pDwmIsCompositionEnabled(&ret);
++        ok((res == S_OK && ret == FALSE) /*wvista win7*/ || (res == S_OK && ret == TRUE) /*>win7*/, "got %x and %d\n", res, ret);
++
++        res = pDwmEnableComposition(DWM_EC_ENABLECOMPOSITION);
++        ok(res == S_OK, "got %x\n", res);
++
++        ret = -1;
++        res = pDwmIsCompositionEnabled(&ret);
++        todo_wine ok(res == S_OK && ret == TRUE, "got %x and %d\n", res, ret);
++    }
++    else
++    {
++        res = pDwmEnableComposition(DWM_EC_ENABLECOMPOSITION); /*cannot enable DWM composition this way*/
++        ok(res == S_OK /*win7 testbot*/ || res == DWM_E_COMPOSITIONDISABLED /*win7 laptop*/, "got %x\n", res);
++        if (winetest_debug > 1)
++            trace("returning %x\n", res);
++
++        ret = -1;       
++        res = pDwmIsCompositionEnabled(&ret);
++        ok(res == S_OK && ret == FALSE, "got %x  and %d\n", res, ret);
++    }
++}
++
++static void test_dwm_get_transport_attributes(void)
++{
++    BOOL isremoting, isconnected;
++    DWORD generation;
++    HRESULT res;
++
++    res = pDwmGetTransportAttributes(&isremoting, &isconnected, &generation);
++    if (dwmenabled)
++        ok(res == S_OK, "got %x\n", res);
++    else
++    {
++        ok(res == S_OK /*win7 testbot*/ || res == DWM_E_COMPOSITIONDISABLED /*win7 laptop*/, "got %x\n", res);
++        if (winetest_debug > 1)
++            trace("returning %x\n", res);
++    }
++}
++
++START_TEST(dwmapi)
++{
++    HMODULE hmod = LoadLibraryA("dwmapi.dll");
++
++    if (!hmod)
++    {
++        trace("dwmapi not found, skipping tests\n");
++        return;
++    }
++
++    pDwmIsCompositionEnabled = (void *)GetProcAddress(hmod, "DwmIsCompositionEnabled");
++    pDwmEnableComposition = (void *)GetProcAddress(hmod, "DwmEnableComposition");
++    pDwmGetTransportAttributes = (void *)GetProcAddress(hmod, "DwmGetTransportAttributes");
++
++    test_isdwmenabled();
++    test_dwm_get_transport_attributes();
++}
+diff --git a/include/dwmapi.h b/include/dwmapi.h
+index b2f39deae5..12527aee62 100644
+--- a/include/dwmapi.h
++++ b/include/dwmapi.h
+@@ -101,6 +101,9 @@ typedef struct _MilMatrix3x2D
+     DOUBLE DY;
+ } MilMatrix3x2D;
+ 
++#define DWM_EC_DISABLECOMPOSITION     0
++#define DWM_EC_ENABLECOMPOSITION      1
++
+ #define DWM_BB_ENABLE                 0x00000001
+ #define DWM_BB_BLURREGION             0x00000002
+ #define DWM_BB_TRANSITIONONMAXIMIZED  0x00000004
+
+-- 
+2.17.1
+
diff --git a/patches/dwmapi-DwmGetTransportAttributes/definition b/patches/dwmapi-DwmGetTransportAttributes/definition
new file mode 100644
index 00000000..0aa45a7e
--- /dev/null
+++ b/patches/dwmapi-DwmGetTransportAttributes/definition
@@ -0,0 +1 @@
+Fixes: [31350] T-Online Mediencenter Assistent (.NET 3.5 WPF app) installer fails ('dwmapi.dll' stubs insufficient in Vista/Win7 mode)
diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh
index e04c18ec..1cc0fd95 100755
--- a/patches/patchinstall.sh
+++ b/patches/patchinstall.sh
@@ -136,6 +136,7 @@ patch_enable_all ()
 	enable_dinput_Initialize="$1"
 	enable_dsound_EAX="$1"
 	enable_dsound_Fast_Mixer="$1"
+	enable_dwmapi_DwmGetTransportAttributes="$1"
 	enable_dwrite_FontFallback="$1"
 	enable_dxdiagn_Enumerate_DirectSound="$1"
 	enable_dxdiagn_GetChildContainer_Leaf_Nodes="$1"
@@ -562,6 +563,9 @@ patch_enable ()
 		dsound-Fast_Mixer)
 			enable_dsound_Fast_Mixer="$2"
 			;;
+		dwmapi-DwmGetTransportAttributes)
+			enable_dwmapi_DwmGetTransportAttributes="$2"
+			;;
 		dwrite-FontFallback)
 			enable_dwrite_FontFallback="$2"
 			;;
@@ -3371,6 +3375,25 @@ if test "$enable_dsound_EAX" -eq 1; then
 	) >> "$patchlist"
 fi
 
+# Patchset dwmapi-DwmGetTransportAttributes
+# |
+# | This patchset fixes the following Wine bugs:
+# |   *	[#31350] T-Online Mediencenter Assistent (.NET 3.5 WPF app) installer fails ('dwmapi.dll' stubs insufficient in
+# | 	Vista/Win7 mode)
+# |
+# | Modified files:
+# |   *	configure, configure.ac, dlls/dwmapi/dwmapi_main.c, dlls/dwmapi/tests/Makefile.in, dlls/dwmapi/tests/dwmapi.c,
+# | 	include/dwmapi.h, include/winerror.h
+# |
+if test "$enable_dwmapi_DwmGetTransportAttributes" -eq 1; then
+	patch_apply dwmapi-DwmGetTransportAttributes/0001-dwmapi-return-DWM_E_COMPOSITIONDISABLED-instead-of-ENOTIMPL-in-DwmGetTransportAttributes.patch
+	patch_apply dwmapi-DwmGetTransportAttributes/0002-dwmapi-add-initial-tests.patch
+	(
+		printf '%s\n' '+    { "Louis Lenders", "dwmapi: Return DWM_E_COMPOSITIONDISABLED instead of E_NOTIMPL in DwmGetTransportAttributes.", 1 },';
+		printf '%s\n' '+    { "Louis Lenders", "dwampi: Add initial tests.", 1 },';
+	) >> "$patchlist"
+fi
+
 # Patchset dwrite-FontFallback
 # |
 # | This patchset fixes the following Wine bugs: