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
b036ee63
Commit
b036ee63
authored
Nov 07, 2012
by
Hans Leidekker
Committed by
Alexandre Julliard
Nov 07, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msi: Register dlls in a separate process.
parent
e2900c23
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
17 deletions
+17
-17
action.c
dlls/msi/action.c
+17
-17
No files found.
dlls/msi/action.c
View file @
b036ee63
...
...
@@ -4720,27 +4720,27 @@ static UINT ACTION_RemoveIniValues( MSIPACKAGE *package )
static
void
register_dll
(
const
WCHAR
*
dll
,
BOOL
unregister
)
{
HMODULE
hmod
;
static
const
WCHAR
regW
[]
=
{
'r'
,
'e'
,
'g'
,
's'
,
'v'
,
'r'
,
'3'
,
'2'
,
'.'
,
'e'
,
'x'
,
'e'
,
' '
,
'\"'
,
'%'
,
's'
,
'\"'
,
0
};
static
const
WCHAR
unregW
[]
=
{
'r'
,
'e'
,
'g'
,
's'
,
'v'
,
'r'
,
'3'
,
'2'
,
'.'
,
'e'
,
'x'
,
'e'
,
' '
,
'/'
,
'u'
,
' '
,
'\"'
,
'%'
,
's'
,
'\"'
,
0
};
PROCESS_INFORMATION
pi
;
STARTUPINFOW
si
;
WCHAR
*
cmd
;
hmod
=
LoadLibraryExW
(
dll
,
0
,
LOAD_WITH_ALTERED_SEARCH_PATH
);
if
(
hmod
)
{
HRESULT
(
WINAPI
*
func_ptr
)(
void
);
const
char
*
func
=
unregister
?
"DllUnregisterServer"
:
"DllRegisterServer"
;
if
(
!
(
cmd
=
msi_alloc
(
strlenW
(
dll
)
*
sizeof
(
WCHAR
)
+
sizeof
(
unregW
)
)))
return
;
func_ptr
=
(
void
*
)
GetProcAddress
(
hmod
,
func
);
if
(
func_ptr
)
if
(
unregister
)
sprintfW
(
cmd
,
unregW
,
dll
);
else
sprintfW
(
cmd
,
regW
,
dll
);
memset
(
&
si
,
0
,
sizeof
(
STARTUPINFOW
)
);
if
(
CreateProcessW
(
NULL
,
cmd
,
NULL
,
NULL
,
FALSE
,
0
,
NULL
,
NULL
,
&
si
,
&
pi
))
{
HRESULT
hr
=
func_ptr
(
);
if
(
FAILED
(
hr
))
WARN
(
"failed to register dll 0x%08x
\n
"
,
hr
);
CloseHandle
(
pi
.
hThread
);
msi_dialog_check_messages
(
pi
.
hProcess
);
CloseHandle
(
pi
.
hProcess
);
}
else
WARN
(
"entry point %s not found
\n
"
,
func
);
FreeLibrary
(
hmod
);
return
;
}
WARN
(
"failed to load library %u
\n
"
,
GetLastError
());
msi_free
(
cmd
);
}
static
UINT
ITERATE_SelfRegModules
(
MSIRECORD
*
row
,
LPVOID
param
)
...
...
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