Hans Leidekker : msiexec: Add /unregserver support.
Alexandre Julliard
julliard at winehq.org
Tue Feb 12 13:58:12 CST 2013
Module: wine
Branch: master
Commit: 6cd2ffae0220fe0d16d48d4534d623e9d951f71a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6cd2ffae0220fe0d16d48d4534d623e9d951f71a
Author: Hans Leidekker <hans at codeweavers.com>
Date: Tue Feb 12 14:32:45 2013 +0100
msiexec: Add /unregserver support.
---
programs/msiexec/msiexec.c | 31 ++++++++++++++++++++++++++++++-
1 files changed, 30 insertions(+), 1 deletions(-)
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)
{
More information about the wine-cvs
mailing list