mirror of
https://github.com/reactos/reactos.git
synced 2025-01-05 22:12:46 +00:00
[WINESYNC] msi: Store the current script in the package.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Hans Leidekker <hans@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org> wine commit id 756bbb5bb756d1fcbeea41e10a6fdf2149fa1323 by Zebediah Figura <z.figura12@gmail.com>
This commit is contained in:
parent
19863c8002
commit
0d762dcba3
7 changed files with 26 additions and 19 deletions
|
@ -517,7 +517,7 @@ static UINT ITERATE_Actions(MSIRECORD *row, LPVOID param)
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = ACTION_PerformAction(package, action, SCRIPT_NONE);
|
rc = ACTION_PerformAction(package, action);
|
||||||
|
|
||||||
msi_dialog_check_messages( NULL );
|
msi_dialog_check_messages( NULL );
|
||||||
|
|
||||||
|
@ -611,7 +611,7 @@ static UINT ACTION_ProcessUISequence(MSIPACKAGE *package)
|
||||||
/********************************************************
|
/********************************************************
|
||||||
* ACTION helper functions and functions that perform the actions
|
* ACTION helper functions and functions that perform the actions
|
||||||
*******************************************************/
|
*******************************************************/
|
||||||
static UINT ACTION_HandleCustomAction(MSIPACKAGE *package, LPCWSTR action, UINT script)
|
static UINT ACTION_HandleCustomAction(MSIPACKAGE *package, LPCWSTR action)
|
||||||
{
|
{
|
||||||
UINT arc;
|
UINT arc;
|
||||||
INT uirc;
|
INT uirc;
|
||||||
|
@ -620,7 +620,7 @@ static UINT ACTION_HandleCustomAction(MSIPACKAGE *package, LPCWSTR action, UINT
|
||||||
if (uirc == IDCANCEL)
|
if (uirc == IDCANCEL)
|
||||||
return ERROR_INSTALL_USEREXIT;
|
return ERROR_INSTALL_USEREXIT;
|
||||||
ui_actioninfo(package, action, TRUE, 0);
|
ui_actioninfo(package, action, TRUE, 0);
|
||||||
arc = ACTION_CustomAction( package, action, script );
|
arc = ACTION_CustomAction(package, action);
|
||||||
uirc = !arc;
|
uirc = !arc;
|
||||||
|
|
||||||
if (arc == ERROR_FUNCTION_NOT_CALLED && needs_ui_sequence(package))
|
if (arc == ERROR_FUNCTION_NOT_CALLED && needs_ui_sequence(package))
|
||||||
|
@ -1553,11 +1553,13 @@ static UINT execute_script( MSIPACKAGE *package, UINT script )
|
||||||
|
|
||||||
TRACE("executing script %u\n", script);
|
TRACE("executing script %u\n", script);
|
||||||
|
|
||||||
|
package->script = script;
|
||||||
|
|
||||||
if (script == SCRIPT_ROLLBACK)
|
if (script == SCRIPT_ROLLBACK)
|
||||||
{
|
{
|
||||||
for (i = package->script_actions_count[script]; i > 0; i--)
|
for (i = package->script_actions_count[script]; i > 0; i--)
|
||||||
{
|
{
|
||||||
rc = ACTION_PerformAction(package, package->script_actions[script][i-1], script);
|
rc = ACTION_PerformAction(package, package->script_actions[script][i-1]);
|
||||||
if (rc != ERROR_SUCCESS)
|
if (rc != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
ERR("Execution of script %i halted; action %s returned %u\n",
|
ERR("Execution of script %i halted; action %s returned %u\n",
|
||||||
|
@ -1570,7 +1572,7 @@ static UINT execute_script( MSIPACKAGE *package, UINT script )
|
||||||
{
|
{
|
||||||
for (i = 0; i < package->script_actions_count[script]; i++)
|
for (i = 0; i < package->script_actions_count[script]; i++)
|
||||||
{
|
{
|
||||||
rc = ACTION_PerformAction(package, package->script_actions[script][i], script);
|
rc = ACTION_PerformAction(package, package->script_actions[script][i]);
|
||||||
if (rc != ERROR_SUCCESS)
|
if (rc != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
ERR("Execution of script %i halted; action %s returned %u\n",
|
ERR("Execution of script %i halted; action %s returned %u\n",
|
||||||
|
@ -1579,6 +1581,9 @@ static UINT execute_script( MSIPACKAGE *package, UINT script )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
package->script = SCRIPT_NONE;
|
||||||
|
|
||||||
msi_free_action_script(package, script);
|
msi_free_action_script(package, script);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -5686,7 +5691,7 @@ static UINT ACTION_ExecuteAction(MSIPACKAGE *package)
|
||||||
msiobj_release(&uirow->hdr);
|
msiobj_release(&uirow->hdr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
rc = ACTION_PerformAction(package, action, SCRIPT_NONE);
|
rc = ACTION_PerformAction(package, action);
|
||||||
|
|
||||||
/* Send all set properties. */
|
/* Send all set properties. */
|
||||||
if (!MSI_OpenQuery(package->db, &view, prop_query))
|
if (!MSI_OpenQuery(package->db, &view, prop_query))
|
||||||
|
@ -7937,7 +7942,7 @@ static UINT ACTION_HandleStandardAction(MSIPACKAGE *package, LPCWSTR action)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action, UINT script)
|
UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action)
|
||||||
{
|
{
|
||||||
UINT rc;
|
UINT rc;
|
||||||
|
|
||||||
|
@ -7947,7 +7952,7 @@ UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action, UINT script)
|
||||||
rc = ACTION_HandleStandardAction(package, action);
|
rc = ACTION_HandleStandardAction(package, action);
|
||||||
|
|
||||||
if (rc == ERROR_FUNCTION_NOT_CALLED)
|
if (rc == ERROR_FUNCTION_NOT_CALLED)
|
||||||
rc = ACTION_HandleCustomAction(package, action, script);
|
rc = ACTION_HandleCustomAction(package, action);
|
||||||
|
|
||||||
if (rc == ERROR_FUNCTION_NOT_CALLED)
|
if (rc == ERROR_FUNCTION_NOT_CALLED)
|
||||||
WARN("unhandled msi action %s\n", debugstr_w(action));
|
WARN("unhandled msi action %s\n", debugstr_w(action));
|
||||||
|
@ -8000,7 +8005,7 @@ static UINT ACTION_PerformActionSequence(MSIPACKAGE *package, UINT seq)
|
||||||
return ERROR_FUNCTION_FAILED;
|
return ERROR_FUNCTION_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = ACTION_PerformAction(package, action, SCRIPT_NONE);
|
rc = ACTION_PerformAction(package, action);
|
||||||
|
|
||||||
msiobj_release(&row->hdr);
|
msiobj_release(&row->hdr);
|
||||||
}
|
}
|
||||||
|
@ -8128,7 +8133,7 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR szPackagePath,
|
||||||
msi_set_property( package->db, szRollbackDisabled, szOne, -1 );
|
msi_set_property( package->db, szRollbackDisabled, szOne, -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = ACTION_PerformAction(package, action, SCRIPT_NONE);
|
rc = ACTION_PerformAction(package, action);
|
||||||
|
|
||||||
/* process the ending type action */
|
/* process the ending type action */
|
||||||
if (rc == ERROR_SUCCESS)
|
if (rc == ERROR_SUCCESS)
|
||||||
|
|
|
@ -1209,7 +1209,7 @@ static UINT defer_custom_action( MSIPACKAGE *package, const WCHAR *action, UINT
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT ACTION_CustomAction( MSIPACKAGE *package, LPCWSTR action, UINT script )
|
UINT ACTION_CustomAction(MSIPACKAGE *package, const WCHAR *action)
|
||||||
{
|
{
|
||||||
static const WCHAR query[] = {
|
static const WCHAR query[] = {
|
||||||
'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ',
|
'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ',
|
||||||
|
@ -1249,7 +1249,7 @@ UINT ACTION_CustomAction( MSIPACKAGE *package, LPCWSTR action, UINT script )
|
||||||
if (type & msidbCustomActionTypeNoImpersonate)
|
if (type & msidbCustomActionTypeNoImpersonate)
|
||||||
WARN("msidbCustomActionTypeNoImpersonate not handled\n");
|
WARN("msidbCustomActionTypeNoImpersonate not handled\n");
|
||||||
|
|
||||||
if (!action_type_matches_script( type, script ))
|
if (!action_type_matches_script(type, package->script))
|
||||||
{
|
{
|
||||||
rc = defer_custom_action( package, action, type );
|
rc = defer_custom_action( package, action, type );
|
||||||
goto end;
|
goto end;
|
||||||
|
|
|
@ -4380,7 +4380,7 @@ static UINT event_spawn_wait_dialog( msi_dialog *dialog, const WCHAR *argument )
|
||||||
|
|
||||||
static UINT event_do_action( msi_dialog *dialog, const WCHAR *argument )
|
static UINT event_do_action( msi_dialog *dialog, const WCHAR *argument )
|
||||||
{
|
{
|
||||||
ACTION_PerformAction( dialog->package, argument, SCRIPT_NONE );
|
ACTION_PerformAction(dialog->package, argument);
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ UINT WINAPI MsiDoActionW( MSIHANDLE hInstall, LPCWSTR szAction )
|
||||||
return remote_DoAction(remote, szAction);
|
return remote_DoAction(remote, szAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ACTION_PerformAction( package, szAction, SCRIPT_NONE );
|
ret = ACTION_PerformAction(package, szAction);
|
||||||
msiobj_release( &package->hdr );
|
msiobj_release( &package->hdr );
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -3742,7 +3742,7 @@ UINT WINAPI MsiCollectUserInfoW(LPCWSTR szProduct)
|
||||||
if (!package)
|
if (!package)
|
||||||
return ERROR_CALL_NOT_IMPLEMENTED;
|
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||||
|
|
||||||
rc = ACTION_PerformAction(package, szFirstRun, SCRIPT_NONE);
|
rc = ACTION_PerformAction(package, szFirstRun);
|
||||||
msiobj_release( &package->hdr );
|
msiobj_release( &package->hdr );
|
||||||
|
|
||||||
MsiCloseHandle(handle);
|
MsiCloseHandle(handle);
|
||||||
|
@ -3768,7 +3768,7 @@ UINT WINAPI MsiCollectUserInfoA(LPCSTR szProduct)
|
||||||
if (!package)
|
if (!package)
|
||||||
return ERROR_CALL_NOT_IMPLEMENTED;
|
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||||
|
|
||||||
rc = ACTION_PerformAction(package, szFirstRun, SCRIPT_NONE);
|
rc = ACTION_PerformAction(package, szFirstRun);
|
||||||
msiobj_release( &package->hdr );
|
msiobj_release( &package->hdr );
|
||||||
|
|
||||||
MsiCloseHandle(handle);
|
MsiCloseHandle(handle);
|
||||||
|
@ -3849,7 +3849,7 @@ UINT WINAPI MsiConfigureFeatureW(LPCWSTR szProduct, LPCWSTR szFeature, INSTALLST
|
||||||
|
|
||||||
MsiSetInternalUI( INSTALLUILEVEL_BASIC, NULL );
|
MsiSetInternalUI( INSTALLUILEVEL_BASIC, NULL );
|
||||||
|
|
||||||
r = ACTION_PerformAction( package, szCostInitialize, SCRIPT_NONE );
|
r = ACTION_PerformAction(package, szCostInitialize);
|
||||||
if (r != ERROR_SUCCESS)
|
if (r != ERROR_SUCCESS)
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
|
|
|
@ -414,6 +414,7 @@ typedef struct tagMSIPACKAGE
|
||||||
struct list mimes;
|
struct list mimes;
|
||||||
struct list appids;
|
struct list appids;
|
||||||
|
|
||||||
|
enum script script;
|
||||||
LPWSTR *script_actions[SCRIPT_MAX];
|
LPWSTR *script_actions[SCRIPT_MAX];
|
||||||
int script_actions_count[SCRIPT_MAX];
|
int script_actions_count[SCRIPT_MAX];
|
||||||
LPWSTR *unique_actions;
|
LPWSTR *unique_actions;
|
||||||
|
@ -976,9 +977,9 @@ extern WCHAR *gszLogFile DECLSPEC_HIDDEN;
|
||||||
extern HINSTANCE msi_hInstance DECLSPEC_HIDDEN;
|
extern HINSTANCE msi_hInstance DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
/* action related functions */
|
/* action related functions */
|
||||||
extern UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action, UINT script) DECLSPEC_HIDDEN;
|
extern UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action) DECLSPEC_HIDDEN;
|
||||||
extern void ACTION_FinishCustomActions( const MSIPACKAGE* package) DECLSPEC_HIDDEN;
|
extern void ACTION_FinishCustomActions( const MSIPACKAGE* package) DECLSPEC_HIDDEN;
|
||||||
extern UINT ACTION_CustomAction(MSIPACKAGE *, const WCHAR *, UINT) DECLSPEC_HIDDEN;
|
extern UINT ACTION_CustomAction(MSIPACKAGE *package, const WCHAR *action) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
/* actions in other modules */
|
/* actions in other modules */
|
||||||
extern UINT ACTION_AppSearch(MSIPACKAGE *package) DECLSPEC_HIDDEN;
|
extern UINT ACTION_AppSearch(MSIPACKAGE *package) DECLSPEC_HIDDEN;
|
||||||
|
|
|
@ -1119,6 +1119,7 @@ MSIPACKAGE *MSI_CreatePackage( MSIDATABASE *db )
|
||||||
msi_load_admin_properties( package );
|
msi_load_admin_properties( package );
|
||||||
|
|
||||||
package->log_file = INVALID_HANDLE_VALUE;
|
package->log_file = INVALID_HANDLE_VALUE;
|
||||||
|
package->script = SCRIPT_NONE;
|
||||||
}
|
}
|
||||||
return package;
|
return package;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue