During our Windows XP to Windows 7 migration, we started seeing some strange issues with execution manager failing to start when running our task sequence. It was only happening on one deployment, and we had dozens of other deployments of the same task sequence running without issue.
We had the below log in our smsts.log.
Invoking Execution Manager to install software
FALSE, HRESULT=87d02004 (e:\nts_sccm_release\sms\client\osdeployment\installsoftware\installsoftware.cpp,264)
0, HRESULT=87d02004 (e:\nts_sccm_release\sms\client\osdeployment\installsoftware\installsoftware.cpp,777)
Failed to invoke Execution Manager to Install Software for PackageID='XXX00086' ProgramID='Install-SMSNomad' AdvertID='XXX21108' hr=0x87d02004
InstallSoftware failed, hr=0x87d02004
Entering ReleaseSource() for \\UNC\SMSPKGF$\XXX00086reference count 1 for the source \\UNC\SMSPKGF$\XXX00086\ before releasing
Released the resolved source \\UNC\SMSPKGF$\XXX00086pInstall->Install(sPackageID, sProgramName), HRESULT=87d02004 (e:\nts_sccm_release\sms\client\osdeployment\installsoftware\main.cpp,361)
Install Software failed, hr=0x87d02004
The interesting piece was that the machine would PXE boot, start the task sequence but once it got into Windows it would get this error when attempting to install the first package.
After reviewing all our settings, we found a very simple answer: The deployment was expired!
This makes sense. Keep in mind that WinPE does not evaluate all deployment settings such as expiration, maintenance windows, platform to run on, etc. So once the machine got into Windows and had a full ConfigMgr client installed, it immediately saw the expired deployment and would not start execution manager. Uncheck the expiration and everything goes off without an issue!