203
24

关于近期封装错误5.3与“找不到sysprep.exe”的讨论

软件发布2022-06-26 10:35山东
22163203
封装错误 5.3

首先,5.3 是一个泛指型错误代码,只要是封装失败的,都会被提示这个错误。实际的问题点,需要根据错误日志 C:\Windows\System32\Sysprep\Panther\setuperr.log 来实际分析。所以在遇到这个错误时,请先查看日志,反馈问题时也请将此日志内容一并发上来。



然后,造成 5.3 错误的情况中,有一种情况比较常见,错误日志形如:
2022-06-25 11:43:59, Error                 SYSPRP Package WinRAR.ShellExtension_1.0.0.1_x64__s4jet1zx4n14a was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image.
2022-06-25 11:43:59, Error                 SYSPRP Failed to remove apps for the current user: 0x80073cf2.
2022-06-25 11:43:59, Error                 SYSPRP Exit code of RemoveAllApps thread was 0x3cf2.
2022-06-25 11:43:59, Error                 SYSPRP ActionPlatform::LaunchModule: Failure occurred while executing 'SysprepGeneralizeValidate' from C:\Windows\System32\AppxSysprep.dll; dwRet = 0x3cf2
2022-06-25 11:43:59, Error                 SYSPRP SysprepSession::Validate: Error in validating actions from C:\Windows\System32\Sysprep\ActionFiles\Generalize.xml; dwRet = 0x3cf2
2022-06-25 11:43:59, Error                 SYSPRP RunPlatformActions:Failed while validating Sysprep session actions; dwRet = 0x3cf2
2022-06-25 11:43:59, Error      [0x0f0070] SYSPRP RunDlls:An error occurred while running registry sysprep DLLs, halting sysprep execution. dwRet = 0x3cf2
2022-06-25 11:43:59, Error      [0x0f00d8] SYSPRP WinMain:Hit failure while pre-validate sysprep generalize internal providers; hr = 0x80073cf2
这里重点分析一句:
SYSPRP Package WinRAR.ShellExtension_1.0.0.1_x64__s4jet1zx4n14a was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image.
大意为 WinRAR.ShellExtension(WinRAR 的壳扩展)是为当前用户安装的,但不能应用于所有用户。这个“包”无法在 sysprep 映像中正常运行。

这个问题有待于进一步探索,目前虽然可以通过卸载其 app 扩展来解决,但不完美,影响右键、关联等。不过在明确了这个问题后,换用其他压缩软件亦可解决。


sysprep.exe 未找到



这个问题我是很懵的,为什么呢,听我说说。

ES5S.exe 是一个32位应用程序(大部分应用程序皆如此),而 x64 系统对于32位应用程序默认存在一个文件重定向。什么叫重定向呢?就是当一个32位应用程序访问形如 C:\Windows\System32\xxx.dat 时会被自动重定向到 C:\Windows\SysWOW64\xxx.dat。

但是 sysprep.exe 的路径为 C:\Windows\System32\sysprep.exe,所以要执行封装必须要让 ES5S.exe 能够访问到这个位置。那么就得让 ES5S.exe 不受文件重定向影响,这里微软官方给出了 WinAPI 函数 Wow64DisableWow64FsRedirection(有兴趣的百度一下),这个函数的功能是让一个32位应用程序在运行期间的文件访问功能不受重定向影响。

简而言之,ES5S.exe 在调用 C:\Windows\System32\sysprep.exe 时需要使自身不受重定向影响即可,而且方案也是微软官方 WinAPI 函数。这本是没有什么问题的,直到遇到了新版搜狗拼音输入法。根据近期反馈,只要安装了近期版本,就会导致 ES5S.exe 无法找到 C:\Windows\System32\sysprep.exe,卸载秒好。这点我是非常懵逼的,为什么呢,WinAPI 函数 Wow64DisableWow64FsRedirection 是对于启用它的应用程序的,不是全局的。而输入法却能影响到这个,我不理解。

那么解决方法呢?也不是没有的,只需要打开搜狗输入法的“隐藏状态栏”,秒好…





然后我就更懵了,敢情这还不是因为输入法,而是因为和输入法状态栏功能冲了?

然后的然后就有人让我从 ES5S.exe 上解决这个问题,我??????




全部回复 203
Skyfree

主题: 665

回复: 999+

关注: 1

粉丝: 854

TA 的积分
  • 9999+
  • 999+
  • 999+
TA 的勋章