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
d34b1c23
Commit
d34b1c23
authored
Sep 21, 2005
by
Mike McCormack
Committed by
Alexandre Julliard
Sep 21, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implement MsiSequenceA/W.
parent
329d017d
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
62 additions
and
6 deletions
+62
-6
action.c
dlls/msi/action.c
+34
-0
install.c
dlls/msi/install.c
+27
-6
msipriv.h
dlls/msi/msipriv.h
+1
-0
No files found.
dlls/msi/action.c
View file @
d34b1c23
...
...
@@ -690,6 +690,40 @@ static UINT ITERATE_Actions(MSIRECORD *row, LPVOID param)
return
rc
;
}
UINT
MSI_Sequence
(
MSIPACKAGE
*
package
,
LPCWSTR
szTable
,
INT
iSequenceMode
)
{
MSIQUERY
*
view
;
UINT
r
;
static
const
WCHAR
query
[]
=
{
'S'
,
'E'
,
'L'
,
'E'
,
'C'
,
'T'
,
' '
,
'*'
,
' '
,
'F'
,
'R'
,
'O'
,
'M'
,
' '
,
'`'
,
'%'
,
's'
,
'`'
,
' '
,
'W'
,
'H'
,
'E'
,
'R'
,
'E'
,
' '
,
'`'
,
'S'
,
'e'
,
'q'
,
'u'
,
'e'
,
'n'
,
'c'
,
'e'
,
'`'
,
' '
,
'>'
,
' '
,
'0'
,
' '
,
'O'
,
'R'
,
'D'
,
'E'
,
'R'
,
' '
,
'B'
,
'Y'
,
' '
,
'`'
,
'S'
,
'e'
,
'q'
,
'u'
,
'e'
,
'n'
,
'c'
,
'e'
,
'`'
,
0
};
iterate_action_param
iap
;
/*
* FIXME: probably should be checking UILevel in the
* ACTION_PerformUIAction/ACTION_PerformAction
* rather than saving the UI level here. Those
* two functions can be merged too.
*/
iap
.
package
=
package
;
iap
.
UI
=
TRUE
;
TRACE
(
"%p %s %i
\n
"
,
package
,
debugstr_w
(
szTable
),
iSequenceMode
);
r
=
MSI_OpenQuery
(
package
->
db
,
&
view
,
query
,
szTable
);
if
(
r
==
ERROR_SUCCESS
)
{
r
=
MSI_IterateRecords
(
view
,
NULL
,
ITERATE_Actions
,
&
iap
);
msiobj_release
(
&
view
->
hdr
);
}
return
r
;
}
static
UINT
ACTION_ProcessExecSequence
(
MSIPACKAGE
*
package
,
BOOL
UIran
)
{
MSIQUERY
*
view
;
...
...
dlls/msi/install.c
View file @
d34b1c23
...
...
@@ -80,19 +80,40 @@ UINT WINAPI MsiDoActionW( MSIHANDLE hInstall, LPCWSTR szAction )
/***********************************************************************
* MsiSequenceA (MSI.@)
*/
UINT
WINAPI
MsiSequenceA
(
MSIHANDLE
hInstall
,
LPCSTR
sz
Action
,
INT
iSequenceMode
)
UINT
WINAPI
MsiSequenceA
(
MSIHANDLE
hInstall
,
LPCSTR
sz
Table
,
INT
iSequenceMode
)
{
TRACE
(
"%s
\n
"
,
debugstr_a
(
szAction
));
return
ERROR_CALL_NOT_IMPLEMENTED
;
LPWSTR
szwTable
;
UINT
ret
;
TRACE
(
"%s
\n
"
,
debugstr_a
(
szTable
));
szwTable
=
strdupAtoW
(
szTable
);
if
(
szTable
&&
!
szwTable
)
return
ERROR_FUNCTION_FAILED
;
ret
=
MsiSequenceW
(
hInstall
,
szwTable
,
iSequenceMode
);
msi_free
(
szwTable
);
return
ret
;
}
/***********************************************************************
* MsiSequenceW (MSI.@)
*/
UINT
WINAPI
MsiSequenceW
(
MSIHANDLE
hInstall
,
LPCWSTR
sz
Action
,
INT
iSequenceMode
)
UINT
WINAPI
MsiSequenceW
(
MSIHANDLE
hInstall
,
LPCWSTR
sz
Table
,
INT
iSequenceMode
)
{
TRACE
(
"%s
\n
"
,
debugstr_w
(
szAction
));
return
ERROR_CALL_NOT_IMPLEMENTED
;
MSIPACKAGE
*
package
;
UINT
ret
;
TRACE
(
"%s
\n
"
,
debugstr_w
(
szTable
));
package
=
msihandle2msiinfo
(
hInstall
,
MSIHANDLETYPE_PACKAGE
);
if
(
!
package
)
return
ERROR_INVALID_HANDLE
;
ret
=
MSI_Sequence
(
package
,
szTable
,
iSequenceMode
);
msiobj_release
(
&
package
->
hdr
);
return
ret
;
}
static
UINT
msi_strcpy_to_awstring
(
LPCWSTR
str
,
awstring
*
awbuf
,
DWORD
*
sz
)
...
...
dlls/msi/msipriv.h
View file @
d34b1c23
...
...
@@ -305,6 +305,7 @@ extern UINT read_raw_stream_data( MSIDATABASE*, LPCWSTR stname,
extern
UINT
ACTION_DoTopLevelINSTALL
(
MSIPACKAGE
*
,
LPCWSTR
,
LPCWSTR
,
LPCWSTR
);
extern
void
ACTION_free_package_structures
(
MSIPACKAGE
*
);
extern
UINT
ACTION_DialogBox
(
MSIPACKAGE
*
,
LPCWSTR
);
extern
UINT
MSI_Sequence
(
MSIPACKAGE
*
package
,
LPCWSTR
szTable
,
INT
iSequenceMode
);
/* record internals */
extern
UINT
MSI_RecordSetIStream
(
MSIRECORD
*
,
unsigned
int
,
IStream
*
);
...
...
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