I figured it out by myself. I will add some key prompts to make others easy to search.
The setupact.log file will show something like this:
And When you want to delete windows 8 apps through PowerShell, It will says that apps are installed by an unknown user, which sid is S-1-5-21-XXXX. And when you execute "Remove-AppxPackage" in powershell, it will says
Error SYSPRP Package Microsoft.Internal.Media.PlayReadyClient_2.3.1678.1_x64__8wekyb3d8bbwe was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image.
As far as i know, Remove-AppxPackage can only remove apps belong to the user which you log in. I don't know why there is an unknown user in my OS, but here is my solution.
Because the current user does not have that package installed
1.Delete all files in C:\Program Files\WindowsApps (You need to change ownership and permission of this folder by right click on it)
2.Delete all files in C:\ProgramData\Microsoft\Windows\AppRepository (You need chage the ownership too).
Note:These steps are not safe, do it on your own risk, You may only delete PackageRepository.edb in AppRepository folder to see if it works.
Now when you "Get-AppxPackage -allusers", it will shows nothing. Now you can run sysprep.exe and it will work well (Remember to change HKLM\SYSTEM\Setup\Status\Sysprep\SysprepStatus to 7).