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

不使用安装程序部署

  •  2
  • Ylisar  · 技术社区  · 16 年前

    我正在做一个非常小的Windows应用程序,它只包含一个可执行文件。由于程序将驻留在SD卡上,我希望应用程序尽可能独立,我不希望有安装程序。我希望用户能够简单地将可执行文件复制到SD卡上,并且能够直接运行它,而不需要处理任何额外的事情。然后问题就变成了我的程序是用VS2008编译的,它需要CRT的版本,我不能保证安装了。我将静态链接到CRT,我错误地认为它可以绕过这个问题。我一直在考虑跟踪一些旧的vs版本,但我觉得这是错误的路径。我希望该程序在新安装的Windows XP及更高版本上运行。

    感谢你的帮助。

    2 回复  |  直到 16 年前
        1
  •  3
  •   shoosh    16 年前

    使用静态链接到CRT /MT /MTd (用于调试)应该完全满足您的需要。

    事实上,这并不意味着仍然存在依赖于动态库的东西。如果您有一些没有用静态CRT编译的附加DLL,则会出现这种情况。

    你可以使用 dependency walker (depends.exe) 确定哪些DLL使用哪些DLL,哪些DLL仍然依赖于动态CRT或任何其他DLL。

    另一种方法是从调试器运行exe,并查看输出窗口中加载了哪些dll。depends.exe只提供启动时加载的DLL,这可以提供一些仅在运行时加载的附加依赖项。

        2
  •  1
  •   CB Bailey    16 年前

    如果希望链接到CRT库的dll版本,并且希望避免安装任何内容,则需要将CRT程序集的每个成员复制到与可执行文件相同的文件夹中。这可能不是微软推动你前进的方式,但它是有效的,而且确实有效。

    在Visual Studio 2008安装目录中,应找到一个文件夹: VC\redist\x86\Microsoft.VC90.CRT . 如果您将该文件夹(包括清单文件)的完整内容复制到与可执行文件相同的目录中,那么您应该能够从该位置运行可执行文件。