代码之家  ›  专栏  ›  技术社区  ›  Josh

不使用VCRESTILY X86EXE的Visual C++重新分配

  •  15
  • Josh  · 技术社区  · 16 年前

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

    VCRedist_x86.exe是一个4Mb的可再发行版本,没有乐趣(传输需要四个小时)。我真的更喜欢重新发布MFC90.dll、msvcm90.dll、msvcp90.dll和msvcr90.dll,这更像是2Mb。然而 Redistributing Visual C++ Files 说:

    不支持重新分发构建时没有清单的C/C++应用程序。VisualC++库不能被C/C++应用程序使用,而不需要将应用程序绑定到这些库。有关详细信息,请参阅 Choosing a Deployment Method

    我最初计划将DLL复制到程序的工作目录中,但似乎没有成功 在这个充满活力的新世界里工作。

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

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

    4 回复  |  直到 16 年前
        1
  •  27
  •   Eugene Talagrand    16 年前

    [我现在是微软的SxS维护人员]

    我强烈建议 反对 但是,如果目标计算机上集中安装了较新版本的CRT,则删除它将阻止您的应用程序从安全更新中受益,因为依赖项将不再匹配。

    因此,总结一下:使用默认值嵌入清单是安全的。将CRT清单+DLL文件直接复制到可执行文件的目录中,无需编辑。就这样。兼容Win2k+。

        2
  •  13
  •   Joe    16 年前

    我们使用这个: Howto: Deploy VC2008 apps without installing vcredist_x86.exe

    • 不要在exe文件中嵌入清单。
    • 从所有清单(您的和Microsoft的)中删除“publicKeyToken”。
    • 如有必要,请更改应用程序清单文件中的版本信息以匹配Microsoft清单文件(反之亦然)
        3
  •  4
  •   1800 INFORMATION    16 年前

    为编译器属性页中的“运行时库”设置指定/MT(多线程)。这将静态链接到运行库,因此您不必安装可再发行文件。

        4
  •  1
  •   Gerald    16 年前

    将它们作为专用程序集安装。请看这里:

    http://msdn.microsoft.com/en-us/library/ms235291.aspx

    推荐文章