msi: Run the InstallExecute sequence if the InstallUISequnce table is empty.
This commit is contained in:
parent
06df9f790d
commit
6da8041d47
|
@ -584,6 +584,30 @@ static UINT msi_apply_transforms( MSIPACKAGE *package )
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL ui_sequence_exists( MSIPACKAGE *package )
|
||||||
|
{
|
||||||
|
MSIQUERY *view;
|
||||||
|
UINT rc;
|
||||||
|
|
||||||
|
static const WCHAR ExecSeqQuery [] =
|
||||||
|
{'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ',
|
||||||
|
'`','I','n','s','t','a','l','l',
|
||||||
|
'U','I','S','e','q','u','e','n','c','e','`',
|
||||||
|
' ','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};
|
||||||
|
|
||||||
|
rc = MSI_DatabaseOpenViewW(package->db, ExecSeqQuery, &view);
|
||||||
|
if (rc == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
msiobj_release(&view->hdr);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************
|
/****************************************************
|
||||||
* TOP level entry points
|
* TOP level entry points
|
||||||
*****************************************************/
|
*****************************************************/
|
||||||
|
@ -592,7 +616,7 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR szPackagePath,
|
||||||
LPCWSTR szCommandLine )
|
LPCWSTR szCommandLine )
|
||||||
{
|
{
|
||||||
UINT rc;
|
UINT rc;
|
||||||
BOOL ui = FALSE;
|
BOOL ui = FALSE, ui_exists;
|
||||||
static const WCHAR szUILevel[] = {'U','I','L','e','v','e','l',0};
|
static const WCHAR szUILevel[] = {'U','I','L','e','v','e','l',0};
|
||||||
static const WCHAR szAction[] = {'A','C','T','I','O','N',0};
|
static const WCHAR szAction[] = {'A','C','T','I','O','N',0};
|
||||||
static const WCHAR szInstall[] = {'I','N','S','T','A','L','L',0};
|
static const WCHAR szInstall[] = {'I','N','S','T','A','L','L',0};
|
||||||
|
@ -647,10 +671,11 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR szPackagePath,
|
||||||
package->script->InWhatSequence |= SEQUENCE_UI;
|
package->script->InWhatSequence |= SEQUENCE_UI;
|
||||||
rc = ACTION_ProcessUISequence(package);
|
rc = ACTION_ProcessUISequence(package);
|
||||||
ui = TRUE;
|
ui = TRUE;
|
||||||
if (rc == ERROR_SUCCESS)
|
ui_exists = ui_sequence_exists(package);
|
||||||
|
if (rc == ERROR_SUCCESS || !ui_exists)
|
||||||
{
|
{
|
||||||
package->script->InWhatSequence |= SEQUENCE_EXEC;
|
package->script->InWhatSequence |= SEQUENCE_EXEC;
|
||||||
rc = ACTION_ProcessExecSequence(package,TRUE);
|
rc = ACTION_ProcessExecSequence(package,ui_exists);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue