DirectX SDK(2010年6月版)安装问题:错误代码S1023。

184

我在安装DirectX SDK时遇到了一些问题。安装过程中似乎一切顺利,但最后出现以下消息:

安装程序失败。 在安装可再发行组件时遇到错误。 请关闭所有已打开的程序并尝试重新运行安装程序。 如果问题仍然存在,请联系DirectX开发支持。

错误代码:S1023

我已经尝试关闭所有已打开的程序并重新安装,但是仍然出现相同的错误。什么是错误代码S1023?我尝试了搜索,但是找到了许多不同的解决方案,我不确定该怎么做。

我尝试查看C:\Windows\Logs中的日志文件。有2个日志文件:DirectX.logDirectX_SDK.log,但我没有看到任何明显的“错误”或“故障”的迹象。

事实上,在DirectX.log中的最后一行是:

11/04/10 18:36:27:dsetup32:安装以值0结束=安装成功

有人能帮忙吗?我正在运行Vista(x64)。


我相信在大多数情况下,出现这个错误的原因是你安装了一个程序(例如游戏),它将可再发行版本升级到比SDK的可再发行版本更高,导致安装失败。我不确定安装失败是否重要。 - Max DeLiso
由于这里没有提到,因此您的声望不足以回答问题:请确保在安装程序上右键单击并选择“以管理员身份运行”。 - Harald Maassen
2
似乎没有人提到过,但您可以忽略此消息。SDK已安装,并设置了环境变量(Win10,June 2010 SDK)。 - FrozenKiwi
8个回答

282

我曾遇到同样的问题,对我来说是因为vc2010 redist x86版本过新。

请检查您的临时文件夹(C:\ Users \\ AppData \ Local \ Temp)中最近的名为

Microsoft Visual C ++ 2010 x64 Redistributable Setup_20110608_xxx.html ##

并检查是否出现以下错误:

  

安装阻止程序:

     

在计算机上检测到了Microsoft Visual C++ 2010 Redistributable的更新版本。

     

最终结果:安装失败,错误代码为:(0x000013EC),“命中了一个StopBlock或未满足系统需求。”(经过时间:0 00:00:00)。

然后转到控制面板>程序和功能,并卸载所有

Microsoft Visual C ++ 2010 x86 / x64 redistributable - 10.0。(30319以上的数字)

成功安装DXSDK后,只需运行Windows更新,它将将redistributables更新回最新版本。


5
我想发表一下,这正是我的问题,感谢分享。楼主真的应该把这标记为解决方案! - George
3
为什么更新的可再发行组件会与安装发生冲突?我可以在安装完成后重新安装它们吗?还是它们会引起问题? - magnattic
7
如果你定制安装过程,你可以选择不安装可再分发组件。这样,在安装SDK时,你就可以保留较新的版本。或者,你可以按建议卸载它,并在之后重新安装。 - Fibericon
3
删除可重新分发组件是否存在风险? - Arthur Mamou-Mani
4
@Fibericon FYI,我好像无法取消安装DX redistribuable选项。我会尝试另一种方法。不过还是谢谢你的建议! - Vaillancourt
显示剩余2条评论

88

我已经遇到了两次相同的问题,找到的最简单、最简洁的解决方案在这里(在MSDN博客-> Windows游戏和DirectX SDK)。然而,以防万一该页面无法访问,这里提供方法:

  1. 从系统中删除Visual C++ 2010 Redistributable Package版本10.0.40219(Service Pack 1)(如果适用则包括x86和x64)。这可以通过具有管理员权限的命令行轻松完成:

    MsiExec.exe /passive /X{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
    MsiExec.exe /passive /X{1D8E6291-B0D5-35EC-8441-6616F567A0F7}
    
  2. 安装DirectX SDK(2010年6月版)。

  3. 重新安装Visual C++ 2010可再发行软件包版本10.0.40219(服务包1)。在x64系统上,应该同时安装C++ REDIST的x86和x64版本。请确保安装最新版本,目前最新版本为KB 2565063,并带有安全修复程序。current version available

Note: 这个问题不会影响早期版本的DirectX SDK,这些版本部署了VS 2005 / VS 2008 CRT REDIST,而没有部署VS 2010 CRT REDIST。这个问题也不会影响DirectX终端用户运行时Web或独立安装程序,因为这些软件包不会部署任何VC++ CRT版本。

文件校验完整性验证器:当然,前提是您实际上拥有一个未损坏的DirectX SDK安装包。 验证最佳方法是运行

fciv -sha1 DXSDK_Jun10.exe

并验证您是否获得

8fe98c00fde0f524760bb9021f438bd7d9304a69 dxsdk_jun10.exe

我已经在我的回答中提供了文章链接,@midspace。 - gregoltsov
谢谢Gregory。那天我的浏览器(IE)可能出了点问题,因为我完全没有看到你帖子中的任何链接(没有彩色文本)。今天使用Safari,我可以看到所有的链接。 :/ - midspace
2
只回答问题1就可以帮助我了,不要发表无关的评论。 - Jimmyt1988

23
这里是微软的官方回答:http://blogs.msdn.com/b/chuckw/archive/2011/12/09/known-issue-directx-sdk-june-2010-setup-and-the-s1023-error.aspx 简要概括如下: 1. 从系统中删除 Visual C++ 2010 Redistributable Package version 10.0.40219 (Service Pack 1)(如果适用,同时删除 x86 和 x64),可以通过具有管理员权限的命令行轻松完成:MsiExec.exe /passive /X{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}和 MsiExec.exe /passive /X{1D8E6291-B0D5-35EC-8441-6616F567A0F7} 2. 安装 DirectX SDK(June 2010) 3. 重新安装 Visual C++ 2010 Redistributable Package version 10.0.40219 (Service Pack 1),在 x64 系统上,应安装 C++ REDIST 的 x86 和 x64 版本。请务必安装当前最新版本,目前为带有安全修复程序的 KB2565063。
Windows SDK:Windows SDK 7.1 存在与 KB 2717426 中所述的完全相同的问题。

这是目前为止最简单的解决方案。我喜欢你添加了Msiexec命令,省去了很多麻烦。最终删除了更新版本,安装顺利完成。一旦找到需要它们的应用程序,我会考虑重新添加它们。 - Alex Summers

2

在控制面板的添加或删除程序中查找 Microsoft Visual C++ 2010 x86/x64 可再发行软件包 - 10.0.xxxxx,如果 xxxxx > 30319,请将其卸载。

我只想说,这个操作(我还清空了我的临时文件夹,在“计算机”->C:->属性->磁盘清理中)使得DirectX June 2010 SDK安装成功了,我用的是Vista32位系统。感谢Lyn先生!:)


1

在我的Win7-64位机器上卸载了太多东西后,我也陷入了困境。我不想重新安装操作系统,但除了下面的注册表修改技巧外,其他技巧都没有奏效。我在一个旧的pchelpforum端口中发现了大部分这个技巧,但我不得不将其适应于我的64位安装:

(对于32位修复,可能跳过Wow6432Node路径)

  1. 打开注册表编辑器
  2. 进入HKEY_LOCAL_MACHINE->SOFTWARE->Wow6432Node->Microsoft->DirectX
  3. 如果这个DirectX文件夹不存在,请创建它。
  4. 如果已经存在,请确保它是空的。
  5. 现在,在右侧的空窗口上单击鼠标右键,添加以下数据(这里可能至少有一个默认字符串值,只需将其留下):

    New->Binary Value
    Name: InstalledVersion
    Type: REG_BINARY
    Data: 00 00 00 09 00 00 00 00
    
    New->DWORD (32-bit) Value
    Name: InstallMDX
    Type: REG_DWORD
    Data: 0x00000001
    
    New->String Value
    Name: SDKVersion
    Type: REG_SZ
    Data: 9.26.1590.0
    
    New->String Value
    Name: Version
    Type: REG_SZ
    Data: 4.09.00.0904
    
  6. 使用最新的DXSDK安装程序重新安装。仅运行时选项也可能有效,但我没有测试过。

  7. 赚钱!

Microsoft网站的解决方案:http://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/error-code-s1023-when-trying-to-install-directx/0aadf7ec-e004-42eb-8a1a-2865ff5b3a37 - Der_Meister

1
在“添加或删除程序”控制面板中查找Microsoft Visual C++ 2010 x86/x64 Redistributable - 10.0.xxxxx,如果xxxxx > 30319,请将其卸载。

0

我也遇到了这个问题。而且我正在运行XP SP3。

以下网站http://www.docin.com/p-60410380.html#指出了解决方案。 但它是简体中文。

我在这里将其主要思想翻译成英语。

运行regedit; 打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectX 然后您必须更改以下两个项目: 项目1: 名称:版本, 类型:REG_SZ, 值应该是一个相当小的数字,以使安装成功。

项目2: 名称:SDKVersion。但在您的机器上,名称可能不同,例如,它可以是ManagedDirectXVersion。但类型应为REG_SZ。 类型:REG_SZ, 值应该是一个相当小的数字,以使安装成功。

实际上,您可以参考DirectX.lgo文件找到确切的版本号。

对我有用。


0
为了补充Ugo Robain已经提供的出色答案,我想指出S1023错误也可能是由于以下原因之一造成的:
产品:Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.17。需要重新启动。安装或更新产品需要重新启动以使所有更改生效。重启被推迟到稍后的时间。
我不确定这是否是由于TiWorker太笨而无法处理已安装先前/较新版本的即时安装,或者是否可能是我打开某个程序并持有msvcr90.dll句柄的原因... 无论如何,即使经过一些调整,唯一的前进方式似乎是重新启动。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接