当版本之间存在已知问题时,为什么 Windows 并行 (winSxS) 会安装自动升级策略?

发布于 2024-07-10 13:11:32 字数 322 浏览 5 评论 0原文

我们有一个使用 MSVC 2K5 SP1(版本 762 msvcrt80)编译的应用程序,

一切都很好,直到有人在同一台计算机上安装 .Net3.0SP1,并随之安装了 msvcrt80 版本 1433 和自动升级策略。

现在我们到处都有随机崩溃和不满意的客户。

我知道我们可以调整清单文件以强制使用特定版本,但我只找到了复制自动生成的详细信息并手动修改它的非常丑陋的方法。 这对于需要修复的大量应用程序来说尤其令人不快。

我们可以改为摆脱 winSxS 目录中愚蠢的“升级”策略吗? 是否有一个选项/标志仅针对特定版本进行编译并仍然自动生成清单?

We have an app compiled using MSVC 2K5, SP1 (version 762 msvcrt80)

All is well, right up until somebody installs on the same machine .Net3.0SP1, and along with it msvcrt80 version 1433 is installed and a policy to automatically upgrade.

Now we have random crashes all over the place and unhappy customers.

I understand we can adjust our manifest files to force the usage of a specific version, but I've only found the really ugly way of copying detail that is auto generated and modifying it by hand. This is especially unpleasant with a large number of apps to fix

Can we instead get rid of the stupid 'upgrade' policy in the winSxS directory?
Is there an option/flag to compile for a specific version only and still automatically generate the manifests?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深巷少女 2024-07-17 13:11:32

查找为您的特定 CRT 版本生成的清单。 然后将编译指示添加到应用程序的主文件中:

#pragma comment(linker,"/manifestdependency:\"type='win32' "            \
        "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' "              \
        "version='" _CRT_ASSEMBLY_VERSION "' "                          \
        "processorArchitecture='x86' "                                  \
        "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")

Find the generated manifest for your specific version of the CRT. Then add a pragma to the main file of your application:

#pragma comment(linker,"/manifestdependency:\"type='win32' "            \
        "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' "              \
        "version='" _CRT_ASSEMBLY_VERSION "' "                          \
        "processorArchitecture='x86' "                                  \
        "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文