Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
129161fe
Commit
129161fe
authored
Mar 26, 2010
by
Hans Leidekker
Committed by
Alexandre Julliard
Mar 26, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msi: Update the UI in the StartServices and StopServices actions.
parent
a9cd43db
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
47 additions
and
5 deletions
+47
-5
action.c
dlls/msi/action.c
+47
-5
No files found.
dlls/msi/action.c
View file @
129161fe
...
@@ -5153,10 +5153,11 @@ static UINT ITERATE_StartService(MSIRECORD *rec, LPVOID param)
...
@@ -5153,10 +5153,11 @@ static UINT ITERATE_StartService(MSIRECORD *rec, LPVOID param)
{
{
MSIPACKAGE
*
package
=
param
;
MSIPACKAGE
*
package
=
param
;
MSICOMPONENT
*
comp
;
MSICOMPONENT
*
comp
;
MSIRECORD
*
uirow
;
SC_HANDLE
scm
=
NULL
,
service
=
NULL
;
SC_HANDLE
scm
=
NULL
,
service
=
NULL
;
LPCWSTR
component
,
*
vector
=
NULL
;
LPCWSTR
component
,
*
vector
=
NULL
;
LPWSTR
name
,
args
;
LPWSTR
name
,
args
,
display_name
=
NULL
;
DWORD
event
,
numargs
;
DWORD
event
,
numargs
,
len
;
UINT
r
=
ERROR_FUNCTION_FAILED
;
UINT
r
=
ERROR_FUNCTION_FAILED
;
component
=
MSI_RecordGetString
(
rec
,
6
);
component
=
MSI_RecordGetString
(
rec
,
6
);
...
@@ -5189,6 +5190,14 @@ static UINT ITERATE_StartService(MSIRECORD *rec, LPVOID param)
...
@@ -5189,6 +5190,14 @@ static UINT ITERATE_StartService(MSIRECORD *rec, LPVOID param)
goto
done
;
goto
done
;
}
}
len
=
0
;
if
(
!
GetServiceDisplayNameW
(
scm
,
name
,
NULL
,
&
len
)
&&
GetLastError
()
==
ERROR_INSUFFICIENT_BUFFER
)
{
if
((
display_name
=
msi_alloc
(
++
len
*
sizeof
(
WCHAR
))))
GetServiceDisplayNameW
(
scm
,
name
,
display_name
,
&
len
);
}
service
=
OpenServiceW
(
scm
,
name
,
SERVICE_START
);
service
=
OpenServiceW
(
scm
,
name
,
SERVICE_START
);
if
(
!
service
)
if
(
!
service
)
{
{
...
@@ -5208,12 +5217,19 @@ static UINT ITERATE_StartService(MSIRECORD *rec, LPVOID param)
...
@@ -5208,12 +5217,19 @@ static UINT ITERATE_StartService(MSIRECORD *rec, LPVOID param)
r
=
ERROR_SUCCESS
;
r
=
ERROR_SUCCESS
;
done:
done:
uirow
=
MSI_CreateRecord
(
2
);
MSI_RecordSetStringW
(
uirow
,
1
,
display_name
);
MSI_RecordSetStringW
(
uirow
,
2
,
name
);
ui_actiondata
(
package
,
szStartServices
,
uirow
);
msiobj_release
(
&
uirow
->
hdr
);
CloseServiceHandle
(
service
);
CloseServiceHandle
(
service
);
CloseServiceHandle
(
scm
);
CloseServiceHandle
(
scm
);
msi_free
(
name
);
msi_free
(
name
);
msi_free
(
args
);
msi_free
(
args
);
msi_free
(
vector
);
msi_free
(
vector
);
msi_free
(
display_name
);
return
r
;
return
r
;
}
}
...
@@ -5326,9 +5342,11 @@ static UINT ITERATE_StopService( MSIRECORD *rec, LPVOID param )
...
@@ -5326,9 +5342,11 @@ static UINT ITERATE_StopService( MSIRECORD *rec, LPVOID param )
{
{
MSIPACKAGE
*
package
=
param
;
MSIPACKAGE
*
package
=
param
;
MSICOMPONENT
*
comp
;
MSICOMPONENT
*
comp
;
MSIRECORD
*
uirow
;
LPCWSTR
component
;
LPCWSTR
component
;
LPWSTR
name
;
LPWSTR
name
=
NULL
,
display_name
=
NULL
;
DWORD
event
;
DWORD
event
,
len
;
SC_HANDLE
scm
;
event
=
MSI_RecordGetInteger
(
rec
,
3
);
event
=
MSI_RecordGetInteger
(
rec
,
3
);
if
(
!
(
event
&
msidbServiceControlEventStop
))
if
(
!
(
event
&
msidbServiceControlEventStop
))
...
@@ -5347,10 +5365,34 @@ static UINT ITERATE_StopService( MSIRECORD *rec, LPVOID param )
...
@@ -5347,10 +5365,34 @@ static UINT ITERATE_StopService( MSIRECORD *rec, LPVOID param )
}
}
comp
->
Action
=
INSTALLSTATE_ABSENT
;
comp
->
Action
=
INSTALLSTATE_ABSENT
;
scm
=
OpenSCManagerW
(
NULL
,
NULL
,
SC_MANAGER_CONNECT
);
if
(
!
scm
)
{
ERR
(
"Failed to open the service control manager
\n
"
);
goto
done
;
}
len
=
0
;
if
(
!
GetServiceDisplayNameW
(
scm
,
name
,
NULL
,
&
len
)
&&
GetLastError
()
==
ERROR_INSUFFICIENT_BUFFER
)
{
if
((
display_name
=
msi_alloc
(
++
len
*
sizeof
(
WCHAR
))))
GetServiceDisplayNameW
(
scm
,
name
,
display_name
,
&
len
);
}
CloseServiceHandle
(
scm
);
deformat_string
(
package
,
MSI_RecordGetString
(
rec
,
2
),
&
name
);
deformat_string
(
package
,
MSI_RecordGetString
(
rec
,
2
),
&
name
);
stop_service
(
name
);
stop_service
(
name
);
msi_free
(
name
);
done:
uirow
=
MSI_CreateRecord
(
2
);
MSI_RecordSetStringW
(
uirow
,
1
,
display_name
);
MSI_RecordSetStringW
(
uirow
,
2
,
name
);
ui_actiondata
(
package
,
szStopServices
,
uirow
);
msiobj_release
(
&
uirow
->
hdr
);
msi_free
(
name
);
msi_free
(
display_name
);
return
ERROR_SUCCESS
;
return
ERROR_SUCCESS
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment