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
50dd7b49
Commit
50dd7b49
authored
May 24, 2011
by
Hans Leidekker
Committed by
Alexandre Julliard
May 24, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msi: Fix the registry actions to revert components to the installed state during rollback.
parent
c88f1285
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
36 deletions
+14
-36
action.c
dlls/msi/action.c
+14
-36
No files found.
dlls/msi/action.c
View file @
50dd7b49
...
...
@@ -2582,20 +2582,13 @@ static UINT ITERATE_WriteRegistryValues(MSIRECORD *row, LPVOID param)
if
(
!
comp
)
return
ERROR_SUCCESS
;
if
(
!
comp
->
Enabled
)
comp
->
Action
=
msi_get_component_action
(
package
,
comp
);
if
(
comp
->
Action
!=
INSTALLSTATE_LOCAL
)
{
TRACE
(
"component
is disabled
\n
"
);
TRACE
(
"component
not scheduled for installation %s
\n
"
,
debugstr_w
(
component
)
);
return
ERROR_SUCCESS
;
}
if
(
comp
->
ActionRequest
!=
INSTALLSTATE_LOCAL
)
{
TRACE
(
"Component not scheduled for installation: %s
\n
"
,
debugstr_w
(
component
));
comp
->
Action
=
comp
->
Installed
;
return
ERROR_SUCCESS
;
}
comp
->
Action
=
INSTALLSTATE_LOCAL
;
name
=
MSI_RecordGetString
(
row
,
4
);
if
(
MSI_RecordIsNull
(
row
,
5
)
&&
name
)
{
...
...
@@ -2758,19 +2751,12 @@ static UINT ITERATE_RemoveRegistryValuesOnUninstall( MSIRECORD *row, LPVOID para
if
(
!
comp
)
return
ERROR_SUCCESS
;
if
(
!
comp
->
Enabled
)
{
TRACE
(
"component is disabled
\n
"
);
return
ERROR_SUCCESS
;
}
if
(
comp
->
ActionRequest
!=
INSTALLSTATE_ABSENT
)
comp
->
Action
=
msi_get_component_action
(
package
,
comp
);
if
(
comp
->
Action
!=
INSTALLSTATE_ABSENT
)
{
TRACE
(
"Component not scheduled for removal: %s
\n
"
,
debugstr_w
(
component
));
comp
->
Action
=
comp
->
Installed
;
TRACE
(
"component not scheduled for removal %s
\n
"
,
debugstr_w
(
component
));
return
ERROR_SUCCESS
;
}
comp
->
Action
=
INSTALLSTATE_ABSENT
;
name
=
MSI_RecordGetString
(
row
,
4
);
if
(
MSI_RecordIsNull
(
row
,
5
)
&&
name
)
...
...
@@ -2835,19 +2821,12 @@ static UINT ITERATE_RemoveRegistryValuesOnInstall( MSIRECORD *row, LPVOID param
if
(
!
comp
)
return
ERROR_SUCCESS
;
if
(
!
comp
->
Enabled
)
{
TRACE
(
"component is disabled
\n
"
);
return
ERROR_SUCCESS
;
}
if
(
comp
->
ActionRequest
!=
INSTALLSTATE_LOCAL
)
comp
->
Action
=
msi_get_component_action
(
package
,
comp
);
if
(
comp
->
Action
!=
INSTALLSTATE_LOCAL
)
{
TRACE
(
"Component not scheduled for installation: %s
\n
"
,
debugstr_w
(
component
));
comp
->
Action
=
comp
->
Installed
;
TRACE
(
"component not scheduled for installation %s
\n
"
,
debugstr_w
(
component
));
return
ERROR_SUCCESS
;
}
comp
->
Action
=
INSTALLSTATE_LOCAL
;
if
((
name
=
MSI_RecordGetString
(
row
,
4
)))
{
...
...
@@ -3252,8 +3231,9 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
comp
->
RefCount
,
comp
->
ActionRequest
);
if
(
comp
->
ActionRequest
==
INSTALLSTATE_LOCAL
||
comp
->
ActionRequest
==
INSTALLSTATE_SOURCE
)
comp
->
Action
=
msi_get_component_action
(
package
,
comp
);
if
(
comp
->
Action
==
INSTALLSTATE_LOCAL
||
comp
->
Action
==
INSTALLSTATE_SOURCE
)
{
if
(
package
->
Context
==
MSIINSTALLCONTEXT_MACHINE
)
rc
=
MSIREG_OpenUserDataComponentKey
(
comp
->
ComponentId
,
szLocalSid
,
&
hkey
,
TRUE
);
...
...
@@ -3273,7 +3253,7 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
msi_reg_set_val_str
(
hkey
,
szPermKey
,
comp
->
FullKeypath
);
}
if
(
comp
->
Action
Request
==
INSTALLSTATE_LOCAL
)
if
(
comp
->
Action
==
INSTALLSTATE_LOCAL
)
msi_reg_set_val_str
(
hkey
,
squished_pc
,
comp
->
FullKeypath
);
else
{
...
...
@@ -3313,14 +3293,13 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
}
RegCloseKey
(
hkey
);
}
else
if
(
comp
->
Action
Request
==
INSTALLSTATE_ABSENT
)
else
if
(
comp
->
Action
==
INSTALLSTATE_ABSENT
)
{
if
(
package
->
Context
==
MSIINSTALLCONTEXT_MACHINE
)
MSIREG_DeleteUserDataComponentKey
(
comp
->
ComponentId
,
szLocalSid
);
else
MSIREG_DeleteUserDataComponentKey
(
comp
->
ComponentId
,
NULL
);
}
comp
->
Action
=
comp
->
ActionRequest
;
/* UI stuff */
uirow
=
MSI_CreateRecord
(
3
);
...
...
@@ -3330,7 +3309,6 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
msi_ui_actiondata
(
package
,
szProcessComponents
,
uirow
);
msiobj_release
(
&
uirow
->
hdr
);
}
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