in Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp [2492:2594]
void DeterminePageId(__in PYBA_STATE state, __out DWORD* pdwPageId) {
LONGLONG simple;
if (BOOTSTRAPPER_DISPLAY_PASSIVE == _command.display) {
switch (state) {
case PYBA_STATE_INITIALIZED:
*pdwPageId = BOOTSTRAPPER_ACTION_HELP == _command.action
? _pageIds[PAGE_HELP]
: _pageIds[PAGE_LOADING];
break;
case PYBA_STATE_HELP:
*pdwPageId = _pageIds[PAGE_HELP];
break;
case PYBA_STATE_DETECTING:
*pdwPageId = _pageIds[PAGE_LOADING]
? _pageIds[PAGE_LOADING]
: _pageIds[PAGE_PROGRESS_PASSIVE]
? _pageIds[PAGE_PROGRESS_PASSIVE]
: _pageIds[PAGE_PROGRESS];
break;
case PYBA_STATE_DETECTED: __fallthrough;
case PYBA_STATE_PLANNING: __fallthrough;
case PYBA_STATE_PLANNED: __fallthrough;
case PYBA_STATE_APPLYING: __fallthrough;
case PYBA_STATE_CACHING: __fallthrough;
case PYBA_STATE_CACHED: __fallthrough;
case PYBA_STATE_EXECUTING: __fallthrough;
case PYBA_STATE_EXECUTED:
*pdwPageId = _pageIds[PAGE_PROGRESS_PASSIVE]
? _pageIds[PAGE_PROGRESS_PASSIVE]
: _pageIds[PAGE_PROGRESS];
break;
default:
*pdwPageId = 0;
break;
}
} else if (BOOTSTRAPPER_DISPLAY_FULL == _command.display) {
switch (state) {
case PYBA_STATE_INITIALIZING:
*pdwPageId = 0;
break;
case PYBA_STATE_INITIALIZED:
*pdwPageId = BOOTSTRAPPER_ACTION_HELP == _command.action
? _pageIds[PAGE_HELP]
: _pageIds[PAGE_LOADING];
break;
case PYBA_STATE_HELP:
*pdwPageId = _pageIds[PAGE_HELP];
break;
case PYBA_STATE_DETECTING:
*pdwPageId = _pageIds[PAGE_LOADING];
break;
case PYBA_STATE_DETECTED:
if (_installPage == PAGE_LOADING) {
switch (_command.action) {
case BOOTSTRAPPER_ACTION_INSTALL:
if (_upgrading) {
_installPage = PAGE_UPGRADE;
} else if (SUCCEEDED(BalGetNumericVariable(L"SimpleInstall", &simple)) && simple) {
_installPage = PAGE_SIMPLE_INSTALL;
} else {
_installPage = PAGE_INSTALL;
}
break;
case BOOTSTRAPPER_ACTION_MODIFY: __fallthrough;
case BOOTSTRAPPER_ACTION_REPAIR: __fallthrough;
case BOOTSTRAPPER_ACTION_UNINSTALL:
_installPage = PAGE_MODIFY;
break;
}
}
*pdwPageId = _pageIds[_installPage];
break;
case PYBA_STATE_PLANNING: __fallthrough;
case PYBA_STATE_PLANNED: __fallthrough;
case PYBA_STATE_APPLYING: __fallthrough;
case PYBA_STATE_CACHING: __fallthrough;
case PYBA_STATE_CACHED: __fallthrough;
case PYBA_STATE_EXECUTING: __fallthrough;
case PYBA_STATE_EXECUTED:
*pdwPageId = _pageIds[PAGE_PROGRESS];
break;
case PYBA_STATE_APPLIED:
*pdwPageId = _pageIds[PAGE_SUCCESS];
break;
case PYBA_STATE_FAILED:
*pdwPageId = _pageIds[PAGE_FAILURE];
break;
}
}
}