mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-09-13 09:17:20 -07:00
Added patch to implement wuauserv dummy service.
This commit is contained in:
parent
577b0d91dc
commit
06ce3611e0
@ -389,6 +389,7 @@ patch_enable_all ()
|
||||
enable_ws2_32_getsockopt="$1"
|
||||
enable_wtsapi32_EnumerateProcesses="$1"
|
||||
enable_wtsapi32_WTSQueryUserToken="$1"
|
||||
enable_wuauserv_Dummy_Service="$1"
|
||||
enable_wusa_MSU_Package_Installer="$1"
|
||||
}
|
||||
|
||||
@ -1329,6 +1330,9 @@ patch_enable ()
|
||||
wtsapi32-WTSQueryUserToken)
|
||||
enable_wtsapi32_WTSQueryUserToken="$2"
|
||||
;;
|
||||
wuauserv-Dummy_Service)
|
||||
enable_wuauserv_Dummy_Service="$2"
|
||||
;;
|
||||
wusa-MSU_Package_Installer)
|
||||
enable_wusa_MSU_Package_Installer="$2"
|
||||
;;
|
||||
@ -7526,6 +7530,18 @@ if test "$enable_wtsapi32_WTSQueryUserToken" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset wuauserv-Dummy_Service
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * configure.ac, loader/wine.inf.in, programs/wuauserv/Makefile.in, programs/wuauserv/main.c
|
||||
# |
|
||||
if test "$enable_wuauserv_Dummy_Service" -eq 1; then
|
||||
patch_apply wuauserv-Dummy_Service/0001-wuauserv-Add-dummy-service.patch
|
||||
(
|
||||
echo '+ { "Michael Müller", "wuauserv: Add dummy service.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset wusa-MSU_Package_Installer
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
@ -0,0 +1,194 @@
|
||||
From 7e5702413a132b28a02abaf8c22f2c25b9ca1edf Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 11 Mar 2016 21:44:53 +0100
|
||||
Subject: wuauserv: Add dummy service.
|
||||
|
||||
---
|
||||
configure.ac | 1 +
|
||||
loader/wine.inf.in | 11 +++++
|
||||
programs/wuauserv/Makefile.in | 6 +++
|
||||
programs/wuauserv/main.c | 104 ++++++++++++++++++++++++++++++++++++++++++
|
||||
4 files changed, 122 insertions(+)
|
||||
create mode 100644 programs/wuauserv/Makefile.in
|
||||
create mode 100644 programs/wuauserv/main.c
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 09e0f53..bffb944 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3520,6 +3520,7 @@ WINE_CONFIG_PROGRAM(wordpad,,[clean,install])
|
||||
WINE_CONFIG_PROGRAM(write,,[clean,install])
|
||||
WINE_CONFIG_PROGRAM(wscript,,[clean,install])
|
||||
WINE_CONFIG_TEST(programs/wscript/tests)
|
||||
+WINE_CONFIG_PROGRAM(wuauserv,,[install])
|
||||
WINE_CONFIG_PROGRAM(wusa,,[install])
|
||||
WINE_CONFIG_PROGRAM(xcopy,,[clean,install])
|
||||
WINE_CONFIG_TEST(programs/xcopy/tests)
|
||||
diff --git a/loader/wine.inf.in b/loader/wine.inf.in
|
||||
index d22b29b..fe7459e 100644
|
||||
--- a/loader/wine.inf.in
|
||||
+++ b/loader/wine.inf.in
|
||||
@@ -129,6 +129,7 @@ AddService=FontCache3.0.0.0,0,WPFFontCacheService
|
||||
AddService=LanmanServer,0,LanmanServerService
|
||||
AddService=FontCache,0,FontCacheService
|
||||
AddService=Schedule,0,TaskSchedulerService
|
||||
+AddService=wuauserv,0,wuauService
|
||||
|
||||
[DefaultInstall.NT.Services]
|
||||
AddService=BITS,0,BITSService
|
||||
@@ -142,6 +143,7 @@ AddService=FontCache3.0.0.0,0,WPFFontCacheService
|
||||
AddService=LanmanServer,0,LanmanServerService
|
||||
AddService=FontCache,0,FontCacheService
|
||||
AddService=Schedule,0,TaskSchedulerService
|
||||
+AddService=wuauserv,0,wuauService
|
||||
|
||||
[DefaultInstall.ntamd64.Services]
|
||||
AddService=BITS,0,BITSService
|
||||
@@ -155,6 +157,7 @@ AddService=FontCache3.0.0.0,0,WPFFontCacheService
|
||||
AddService=LanmanServer,0,LanmanServerService
|
||||
AddService=FontCache,0,FontCacheService
|
||||
AddService=Schedule,0,TaskSchedulerService
|
||||
+AddService=wuauserv,0,wuauService
|
||||
|
||||
[Strings]
|
||||
MciExtStr="Software\Microsoft\Windows NT\CurrentVersion\MCI Extensions"
|
||||
@@ -3253,6 +3256,14 @@ ErrorControl=1
|
||||
HKR,Parameters,"ServiceDll",,"%11%\schedsvc.dll"
|
||||
HKLM,%CurrentVersionNT%\SvcHost,"netsvcs",0x00010008,"Schedule"
|
||||
|
||||
+[wuauService]
|
||||
+Description="wuauserv"
|
||||
+DisplayName="Automatic Updates"
|
||||
+ServiceBinary="%11%\wuauserv.exe"
|
||||
+ServiceType=32
|
||||
+StartType=3
|
||||
+ErrorControl=1
|
||||
+
|
||||
[Services]
|
||||
HKLM,%CurrentVersion%\RunServices,"winemenubuilder",2,"%11%\winemenubuilder.exe -a -r"
|
||||
HKLM,"System\CurrentControlSet\Services\Eventlog\Application",,16
|
||||
diff --git a/programs/wuauserv/Makefile.in b/programs/wuauserv/Makefile.in
|
||||
new file mode 100644
|
||||
index 0000000..16f27f1
|
||||
--- /dev/null
|
||||
+++ b/programs/wuauserv/Makefile.in
|
||||
@@ -0,0 +1,6 @@
|
||||
+MODULE = wuauserv.exe
|
||||
+APPMODE = -mconsole
|
||||
+IMPORTS = advapi32
|
||||
+
|
||||
+C_SRCS = \
|
||||
+ main.c
|
||||
diff --git a/programs/wuauserv/main.c b/programs/wuauserv/main.c
|
||||
new file mode 100644
|
||||
index 0000000..31df299
|
||||
--- /dev/null
|
||||
+++ b/programs/wuauserv/main.c
|
||||
@@ -0,0 +1,104 @@
|
||||
+/*
|
||||
+ * Copyright 2007 Jacek Caban for CodeWeavers
|
||||
+ * Copyright 2016 Michael Müller
|
||||
+ *
|
||||
+ * 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
|
||||
+ */
|
||||
+
|
||||
+#define WIN32_LEAN_AND_MEAN
|
||||
+
|
||||
+#include <windows.h>
|
||||
+#include <winsvc.h>
|
||||
+
|
||||
+#include "wine/debug.h"
|
||||
+
|
||||
+WINE_DEFAULT_DEBUG_CHANNEL(wuauserv);
|
||||
+
|
||||
+static WCHAR wuauservW[] = {'w','u','a','u','s','e','r','v',0};
|
||||
+
|
||||
+static SERVICE_STATUS_HANDLE service_handle;
|
||||
+static HANDLE stop_event;
|
||||
+
|
||||
+static DWORD WINAPI service_handler( DWORD ctrl, DWORD event_type, LPVOID event_data, LPVOID context )
|
||||
+{
|
||||
+ SERVICE_STATUS status;
|
||||
+
|
||||
+ status.dwServiceType = SERVICE_WIN32;
|
||||
+ status.dwControlsAccepted = SERVICE_ACCEPT_STOP;
|
||||
+ status.dwWin32ExitCode = 0;
|
||||
+ status.dwServiceSpecificExitCode = 0;
|
||||
+ status.dwCheckPoint = 0;
|
||||
+ status.dwWaitHint = 0;
|
||||
+
|
||||
+ switch(ctrl)
|
||||
+ {
|
||||
+ case SERVICE_CONTROL_STOP:
|
||||
+ case SERVICE_CONTROL_SHUTDOWN:
|
||||
+ WINE_TRACE( "shutting down\n" );
|
||||
+ status.dwCurrentState = SERVICE_STOP_PENDING;
|
||||
+ status.dwControlsAccepted = 0;
|
||||
+ SetServiceStatus( service_handle, &status );
|
||||
+ SetEvent( stop_event );
|
||||
+ return NO_ERROR;
|
||||
+ default:
|
||||
+ WINE_FIXME( "got service ctrl %x\n", ctrl );
|
||||
+ status.dwCurrentState = SERVICE_RUNNING;
|
||||
+ SetServiceStatus( service_handle, &status );
|
||||
+ return NO_ERROR;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void WINAPI serv_main(DWORD argc, LPWSTR *argv)
|
||||
+{
|
||||
+ SERVICE_STATUS status;
|
||||
+
|
||||
+ WINE_TRACE( "starting service\n" );
|
||||
+
|
||||
+ stop_event = CreateEventW( NULL, TRUE, FALSE, NULL );
|
||||
+
|
||||
+ service_handle = RegisterServiceCtrlHandlerExW( wuauservW, service_handler, NULL );
|
||||
+ if (!service_handle)
|
||||
+ return;
|
||||
+
|
||||
+ status.dwServiceType = SERVICE_WIN32;
|
||||
+ status.dwCurrentState = SERVICE_RUNNING;
|
||||
+ status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
|
||||
+ status.dwWin32ExitCode = 0;
|
||||
+ status.dwServiceSpecificExitCode = 0;
|
||||
+ status.dwCheckPoint = 0;
|
||||
+ status.dwWaitHint = 10000;
|
||||
+ SetServiceStatus( service_handle, &status );
|
||||
+
|
||||
+ WaitForSingleObject( stop_event, INFINITE );
|
||||
+
|
||||
+ status.dwCurrentState = SERVICE_STOPPED;
|
||||
+ status.dwControlsAccepted = 0;
|
||||
+ SetServiceStatus( service_handle, &status );
|
||||
+ WINE_TRACE( "service stopped\n" );
|
||||
+}
|
||||
+
|
||||
+int main(int argc, char **argv)
|
||||
+{
|
||||
+ static const SERVICE_TABLE_ENTRYW servtbl[] =
|
||||
+ {
|
||||
+ {wuauservW, serv_main},
|
||||
+ {NULL, NULL}
|
||||
+ };
|
||||
+
|
||||
+ WINE_TRACE( "(%d %p)\n", argc, argv );
|
||||
+
|
||||
+ StartServiceCtrlDispatcherW( servtbl );
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
2.7.1
|
||||
|
1
patches/wuauserv-Dummy_Service/definition
Normal file
1
patches/wuauserv-Dummy_Service/definition
Normal file
@ -0,0 +1 @@
|
||||
Fixes: Implement wuauserv dummy service
|
Loading…
Reference in New Issue
Block a user