问题标签 [winsxs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5271 浏览

tortoisesvn - TortoiseSVN 并排配置不正确

升级到最新版本的 TortoiseSVN (1.5.2.13595) 后,它的上下文菜单不再可用。

尝试手动运行它时,我收到此错误:

应用程序日志显示了这一点

0 投票
4 回答
37719 浏览

visual-c++ - 不使用 VCRedist_x86.exe 的 Visual C++ Redistributables

我在一个受到严格限制的环境中开发,但开发人员也有严格的控制。

VCRedist_x86.exe - 一个 4Mb 的可再发行文件 - 不好玩(传输四个小时)。我真的更喜欢只重新分发 MFC90.dll、msvcm90.dll、msvcp90.dll 和 msvcr90.dll - 这更像是 2Mb。但是,重新分发 Visual C++ 文件说:

不支持重新分发在没有清单的情况下构建的 C/C++ 应用程序。如果没有将应用程序绑定到这些库的清单,C/C++ 应用程序就不能使用 Visual C++ 库。有关详细信息,请参阅选择部署方法

我最初将 DLL 复制到程序工作目录的计划似乎在这个勇敢的清单新世界中行不通。

我的下一个猜测是将文件填充到 WinSxS 目录所需的注册表项并自己填充(而不是使用 4 meg 程序)。

[编辑] 该软件经常更新,因此 DLL 比静态链接更受欢迎。[/编辑]

我怎样才能成功地分发必要的文件,同时降低开销?

0 投票
11 回答
45409 浏览

c++ - 在 Visual C++ 2008 的调试模式下找不到 MSVCR90D.dll

我在使用 Visual C++ 2008 时遇到问题。我已经安装了 opencv,并且创建了一个新程序,并且我构建它时没有出现任何错误。但是,它抱怨调试时找不到 MSVCR90D.dll。在发布模式下完全没有问题。

我确实在 Winsxs 文件夹之一中有 MSVCR90D.dll。有谁知道解决这个问题?这是一个已知的错误?

杰拉德

0 投票
1 回答
1329 浏览

installation - SxS 安装和 WiX

我试图弄清楚如何处理我们作为框架的项目的安装和部署。通常,开发人员会安装框架,然后让他们的 .Net 应用程序引用我们的 dll。

该框架有2个层次:

  1. 许多本机 C++ dll
  2. 一些引用本机 dll 的 C++\CLI 和 C# 程序集(都是 dll)

我想提供一个安装程序,将 .Net 程序集放在 GAC 中,并将本机程序集安装在 WinSxS 文件夹中。到目前为止,我还没有找到很多关于安装 SxS 程序集的信息。我知道它可以使用 MSI 来完成,我想知道是否有人知道如何使用 WiX 或其他一些安装工具来完成。

我相信这不能使用 Visual Studio 安装项目来完成。

0 投票
6 回答
17182 浏览

assemblies - 如何卸载 Win32 程序集并清理 WinSxS?

经过大量的试验和错误(主要是由于缺乏文档和示例),我设法创建了将自定义 DLL 作为并行程序集安装到 WinSxS 的 MSI 安装程序。只有一个问题:卸载会将所有文件(DLL、清单和目录)留在 WinSxS 目录中。我怎样才能或应该最好地清理它?我确信没有其他东西引用它。

我在某处读到 WinSxS 有一个自我清理过程,随着时间的推移会清理,但我找不到更多信息。你可以手动调用它来清理东西吗?

我看到的唯一其他方法是手动删除这些位。首先,您必须将所有文件(程序集、目录、清单及其各自目录)的所有者从 SYSTEM 更改为管理员帐户,调整权限并删除它们。注册表中还剩下一些部分(我认为 HKLM\COMPONENTS\DerivedData\Components 可能是一个地方),但由于 WinSxS 应该被视为不透明,因此很难找到任何信息。

0 投票
3 回答
3991 浏览

.net - 有没有人成功地将免注册 COM 与 .NET 组件一起使用?

直到最近,我们还在为我们的本机和 .NET COM 组件愉快地使用免注册COM。但是,我们遇到了一个奇怪的问题,我们的应用程序在 Windows XP SP3 上开始随机崩溃(但不是在 vista 上),因为我们只更改了 .NET 程序集的版本号以从候选发布版移动到发布版。(你不只是讨厌墨菲定律吗?)

经过许多人日和磨牙,我们发现这个问题是sxs.dll中的一个已知错误,它在检索有关 .NET 类的信息时会导致堆损坏。有一个热修复程序可以使问题消失,但热修复程序并不打算重新分发。

我们有点难过,免注册的 COM 实现中存在如此可怕的错误。有没有人成功地为 .NET 组件使用免注册 COM?你是如何解决这个问题的?

0 投票
1 回答
3180 浏览

windows - WinSxS:如何依赖特定版本的 gdiplus.dll?

我需要添加对特定版本的 GDIPlus 的依赖项。这是我想要的 GDI+ 版本:

替代文字

我想确定我使用这个版本是出于特定的兼容性原因。

我在我的可执行文件中添加了一个程序集清单,定义了我对GdiPlus版本的依赖:

除了当我运行我的应用程序时,Windows 的 fusion 加载程序从 Side-by-Side 文件夹中为我提供了一些其他版本的 gdiplus.dll,我可以在 Process Explorer 中看到:

替代文字

它给了我版本5.02.6002.18005,而不是5.1.3102.2180

所以问题是:如何依赖特定版本的 Windows dll?

0 投票
1 回答
917 浏览

windows-xp - 卸载正在使用的共享程序集使 WinSxs 处于错误状态

我在 WinXP 上使用 Wix3 卸载共享的 win32 SxS 程序集时遇到问题。我的 wix 文件看起来很像http://n2.nabble.com/Tutorial-How-to-install-files-into-WinSxS-td841475.html中描述的文件。

问题是,如果程序集中的模块正在使用中,卸载程序会以成功错误代码完成,但程序集处于损坏状态:清单和安全目录已被删除,但程序集目录仍然存在,其中包含我的 dll . DLL 在重新启动后仍然存在,因此不会以任何方式标记为删除。MSI 日志文件中没有明显的错误。

如果我尝试重新安装软件包,它会跳过程序集的安装。这些组件不再注册,所以我无法让安装程序再次尝试卸载。以下显示在后续安装的 msi 日志中:

MSI (c) (98:44) [11:46:56:263]:跳过装配组件的安装:{26A273E7-7F9A-4F77-9FA8-5E413A155BEC},因为装配已经存在

除了手动删除我的程序集目录之外,我找不到将 SxS 恢复到良好状态的方法,此时该目录不再受 XP 系统还原的保护。

虽然我的实际安装程序要复杂得多,但我已经能够使用一个非常基本的安装程序来重现它,该安装程序具有包含单个组件的单个功能。该组件包含一个 dll、一个清单和一个安全目录。dlls <File> 元素设置了 KeyPath、Assembly 和 AssemblyManifest 属性。安装后,我可以通过在 MSVS 中打开 DLL 来模拟加载程序集的过程。

我应该在卸载时调用额外的操作来检测和防止这种情况吗?或者,即使 WinSXS 中已经存在 DLL,是否有强制执行安装操作的方法?

有点相关,如果我尝试升级安装了该程序集的软件包,如果程序集没有更改,我也会遇到问题。安装程序决定它不需要重新安装程序集(因为它没有更改),但是当 SxsUninstallCA 运行时,它会继续并删除程序集。从安装程序的角度来看,组件仍然安装,但文件已消失。

0 投票
1 回答
1703 浏览

versioning - MSXML:如何询问 IXMLDOMNode 它来自哪个版本的 MSXML?

我怎么能问IXMLDOMDocument2是什么版本的 MSXML?给定一个IXMLDOMDocument2我需要创建另一个相同版本的文档。

如果你从不同版本的 MSXML 中给出一个 IXMLDOMDocument,你会从 msxml 中得到一个异常:

混合来自不同版本的 MSXML 的对象是错误的。

微软内部可以询问接口它来自哪个版本的 MSXML,我需要访问相同的东西。


考虑以下用伪代码编写的假设函数:

问题是,如果 IXMLDOMNode 来自,比如MSXML6。创建DOMDocument的是版本 3(因为 Microsoft 在 MSXML 中的版本依赖性)。这将导致

抛出 COM 异常:

既然微软能够询问一个接口它来自哪个版本的 MSXML,我应该能够做同样的事情,但是怎么做呢?

或者,给定一个IXMLDOMNode,我如何构造一个XMLDOMDocument相同版本的对象......

0 投票
1 回答
355 浏览

qt - 使用 MSVC 2005 编译 Qt 并处理 SxS Windows

我正在与之合作的一个小组的任务是使用 Qt 开发一个新项目。但是,我们需要能够与来自 MSVC 2005 世界的 C++ 库进行链接。我们最终还需要与基于 MSVC 的构建系统集成,因此使用 MSVC 构建 Qt 似乎很重要。

我已经使用 MSVC 2005 重新编译了 Qt,并且可以正常工作。(如果不像它应该的那么容易)这将适用于实际编译它的盒子。然而,在不同的机器上使用对我们来说是一件非常痛苦的事情,因为 MSVC 2005 似乎总是在运行时使用稍微不同的 SxS Windows DLL 版本。

对于 XP、MSVC,我们不可能都获得相同的补丁级别,因为我们通常属于不同组的一部分,具有不同的工具链补丁级别目标。

处理此类问题的最简单方法是什么?