本文最后更新于2025年11月03日;如遇到问题,请及时留言告知。

在我处理软件问题的选项里没有重装系统这个选项!

问题:

日常安装欧姆龙编程软件 CX-One 时出现 Error 1935 的错误并导致安装失败,且安装 Sysmac Studio 时同样如此。

系统环境:Windows 11 23H2 ( OS内部版本22631.2715 )

tyrtey.jpg

分析:

Error 1935 的错误时常发生在各种程序的安装过程中,但原因不尽相同,本次出现的详细错误代码是 HRESULT:0x80070091。 首先根据资料分析,这是一个 Visual C++ 组件在安装过程的报错,通过分析报错时的系统日志文件,找到了更多信息,其中在名为 MSIf6bf3.LOG 通常在( C:\Users\[用户名]\AppData\Local\Temp )的一个日志文件头部发现了更为详细的报错内容:

Error 1935.安装程序集组件 {6D321E57-3E99-3B87-BF23-2CDFF3361CB4} 时出错。HRESULT:0x80070091。程序集界面:IAssemblyCacheItem, 函数:Commit。{{程序集名称: Microsoft.VC90.CRT,version="9.0.30729.1",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="x86",type="win32"

通过程序集名称: Microsoft.VC90.CRT,version="9.0.30729.1" 这段信息可以知道,出错的程序集为 Microsoft Visual C++ 2008 Redistributable x86 且版本为 9.0.30729.1 ,为了更好更快的解决问题,找到了该版本组件包的独立安装程序,并进行安装测试,果然报错且安装失败。 由于这些组件都由 .msi 文件通过 Windows Installer 服务安装到操作系统的,于是立即分析系统 CBS 日志文件(C:\Windows\Logs\CBS\cbs.log),看能否有更多线索,根据报错的时间戳在 CBS 日志文件中找到了更为详细的信息:

2023-11-18 08:24:38, Error             CSI    00000007@2023/11/18:00:24:38.914 (F) onecore\base\wcp\sil\ntsystem.cpp(4098): Error STATUS_DIRECTORY_NOT_EMPTY originated in function Windows::Rtl::SystemImplementation::DirectFileSystemProvider::SysSetInformationFile expression: (null)
[gle=0x80004005]
2023-11-18 08:24:38, Error             CSI    00000008 (F) STATUS_DIRECTORY_NOT_EMPTY #608# from Windows::Rtl::SystemImplementation::DirectFileSystemProvider::SysSetInformationFile(flags = 0x00000400, h = 35c ('\Device\HarddiskVolume3\Windows\WinSxS\Fusion\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_none_ea33c8f0b247cd77\9.0\9.0.30729.1'), iosb = @0x3d9e57cde0, buff = @0x3d9e57cdb8, bufflen = 1, ic = 13, disp = Invalid)
[gle=0xd0000101]
2023-11-18 08:24:38, Error             CSI    00000009 (F) STATUS_DIRECTORY_NOT_EMPTY #606# from Windows::Rtl::SystemImplementation::MarkFileDeletePending(...)[gle=0xd0000101]
2023-11-18 08:24:38, Error             CSI    0000000a (F) STATUS_DIRECTORY_NOT_EMPTY #605# from Windows::Rtl::SystemImplementation::CSystemIsolationLayer_IRtlSystemIsolationLayerTearoff::DeleteFilesystemFile(flags = (OpenForBackupIntent|DeleteIfReadOnly|MissingFileIsOk), fn = [l:103]'\SystemRoot\WinSxS\Fusion\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_none_ea33c8f0b247cd77\9.0\9.0.30729.1', disp = Invalid)
[gle=0xd0000101]
2023-11-18 08:24:38, Info              CSI    0000000b Error STATUS_DIRECTORY_NOT_EMPTY while executing operation MoveFile on [l:249]'\SystemRoot\WinSxS\InstallTemp\{F48E5B41-3CF6-450C-BC74-D0BE90775EC8}\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_e163563597edeada\, \SystemRoot\WinSxS\Fusion\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_none_ea33c8f0b247cd77\9.0\9.0.30729.1'

2023-11-18 08:24:38, Error             SXS    Failure in applying primitives, -1073741567 0 2 0 \SystemRoot\WinSxS\InstallTemp\{F48E5B41-3CF6-450C-BC74-D0BE90775EC8}\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_e163563597edeada\, \SystemRoot\WinSxS\Fusion\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_none_ea33c8f0b247cd77\9.0\9.0.30729.1
2023-11-18 08:24:38, Error             SXS    WIL Origination: onecore\base\servicing\turbostack\lib\fusion.cpp(357)\TurboStack.dll!00007FFBBEFA4C7F: (caller: 00007FFBF450690E) Exception(1) tid(3050) C0000101 \u8981\u5220\u9664\u7684\u76ee\u5f55\u4e0d\u662f\u7a7a\u7684\u3002

2023-11-18 08:24:38, Error             CSI    0000000c@2023/11/18:00:24:38.915 (F) onecore\base\servicing\turbostack\lib\fusion.cpp(357): Error HRESULT_FROM_WIN32(145) originated in function (null) expression: (null)
[gle=0x80004005]
2023-11-18 08:24:38, Error             SXS    WIL Origination: onecore\base\servicing\turbostack\lib\fusion.cpp(379)\TurboStack.dll!00007FFBBF02FA14: (caller: 00007FFBF450690E) ReturnNt(1) tid(3050) C0000101 \u8981\u5220\u9664\u7684\u76ee\u5f55\u4e0d\u662f\u7a7a\u7684\u3002
    Msg:[onecore\base\servicing\turbostack\lib\fusion.cpp(357)\TurboStack.dll!00007FFBBEFA4C7F: (caller: 00007FFBF450690E) Exception(1) tid(3050) C0000101 \u8981\u5220\u9664\u7684\u76ee\u5f55\u4e0d\u662f\u7a7a\u7684\u3002
] 

2023-11-18 08:24:38, Error             CSI    0000000d@2023/11/18:00:24:38.915 (F) onecore\base\servicing\turbostack\lib\fusion.cpp(379): Error HRESULT_FROM_WIN32(145) originated in function (null) expression: (null)
[gle=0x80004005]
2023-11-18 08:24:38, Error             SXS    Finalize failed with 0x80070091
2023-11-18 08:24:38, Info              CSI    0000000e Direct SIL provider: Number of files opened: 30.

通过 CBS 日志可知导致报错的原因为 STATUS_DIRECTORY_NOT_EMPTY (状态目录不为空)具体涉及的位置有\Device\HarddiskVolume3\Windows\WinSxS\Fusion\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_none_ea33c8f0b247cd77\9.0\9.0.30729.1 于是在系统目录找到这个文件夹并将其删除,并通过文件搜索工具将文件名涉及 9.0.30729.1 均全部删除。并根据曾经尝试过的所有操作分析,即使删除这些文件也并不一定能解决这个报错问题,

解决:

根据已掌握的信息,Windows Installer(msiexec.exe) 和 Windows 搜索(SearchIndexer.exe)服务之间存在干扰也会导致该报错,于是在系统服务中停止了 Windows Search 服务,再次执行 Microsoft Visual C++ 2008 Redistributable 组件包的安装程序,这次安装顺利完成,然后再次运行 CX-One 安装程序,安装过程同样顺利进行并最终安装完毕。

避坑 :

以下是尝试过的无效操作(仅代表无法解决本次的报错):

无效操作1:

  1. 打开注册表编辑器,展开 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control 路径。
  2. 在右侧找到 RegistrySizeLimit 键值,如果没有该项,则右键单击 Control,选择新建,创建一个名为RegistrySizeLimit 的 DWORD(32位)值。
  3. 双击 RegistrySizeLimit,设置基数为十六进制,将数值数据栏中的值设置为 ffffffff
  4. 重启电脑
  5. 以管理员方式打开命令行窗口,执行 sfc /scannow 检查系统完整性并修复系统错误,然后再次运行安装程序。

无效操作2:

  1. 打开任务管理器,切换到 "服务" 选项卡,单击页面中的 [打开服务]  ,打开服务管理控制台。
  2. 在服务列表中找到 "Windows Modules Installer" 服务。
  3. 右键单击该服务,选择 "启动" 以启动该服务。

无效操作3:

使用最新的欧姆龙官方卸载工具 CXOneRemover 清除该程序的相关安装信息。

无效操作4:

重装.NET Framework 3.5 :在 Windwos 功能中,取消勾选 .NET Framework 3.5 ,重启后再次勾选,来重新安装。

无效操作5:

通过微软官方工具修复 Microsoft .NET Framework 组件

无效操作6:

在控制面板对所有已安装的各版本 .NET Framework 右键选择修复安装

无效操作7:

在注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppModel 位置,重命名 AppModel 这一目录名

无效操作8:

关闭全部杀毒软件进行安装

无效操作9:

通过系统还原功能将系统还原到之前一个较早的时间点

无效操作10:

清理注册表,通过搜索关键词信息,清理注册表中所有有关 VC++ 2008 版本的信息

无效操作11:

卸载系统中其他版本的 VC++ 2008 组件