[1/2] msiexec: Add /unregserver support.
Hans Leidekker
hans at codeweavers.com
Tue Feb 12 07:32:45 CST 2013
---
programs/msiexec/msiexec.c | 31 ++++++++++++++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/programs/msiexec/msiexec.c b/programs/msiexec/msiexec.c
index 9b378c6..13a55c2 100644
--- a/programs/msiexec/msiexec.c
+++ b/programs/msiexec/msiexec.c
@@ -373,6 +373,35 @@ static DWORD DoRegServer(void)
return ret;
}
+static DWORD DoUnregServer(void)
+{
+ static const WCHAR msiserverW[] = {'M','S','I','S','e','r','v','e','r',0};
+ SC_HANDLE scm, service;
+ DWORD ret = 0;
+
+ if (!(scm = OpenSCManagerW(NULL, SERVICES_ACTIVE_DATABASEW, SC_MANAGER_CONNECT)))
+ {
+ fprintf(stderr, "Failed to open service control manager\n");
+ return 1;
+ }
+ if ((service = OpenServiceW(scm, msiserverW, DELETE)))
+ {
+ if (!DeleteService(service))
+ {
+ fprintf(stderr, "Failed to delete MSI service\n");
+ ret = 1;
+ }
+ CloseServiceHandle(service);
+ }
+ else if (GetLastError() != ERROR_SERVICE_DOES_NOT_EXIST)
+ {
+ fprintf(stderr, "Failed to open MSI service\n");
+ ret = 1;
+ }
+ CloseServiceHandle(scm);
+ return ret;
+}
+
static INT DoEmbedding( LPWSTR key )
{
printf("Remote custom actions are not supported yet\n");
@@ -982,7 +1011,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
}
else if (FunctionUnregServer)
{
- WINE_FIXME( "/unregserver not implemented yet, ignoring\n" );
+ ReturnCode = DoUnregServer();
}
else if (FunctionServer)
{
--
1.7.10.4
More information about the wine-patches
mailing list