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

客户愤怒,反对未知的dll依赖项

  •  29
  • wheaties  · 技术社区  · 16 年前

    我是一个为客户开发C++ Windows应用程序的一人秀。在过去的几个月里,我们遇到了同样的问题,即缺少对客户机的dll依赖。尽管我尽了最大努力,还是出了问题,我们收到了愤怒的电子邮件。我的老板和老板的老板对我很生气,顾客也不高兴。

    我希望你们能提供帮助,并就如何使可交付成果井然有序给出建议/想法。在一些显而易见的事情之前:

    1. 我没有试验机。也就是说,我无法复制客户环境,也无法尝试在“干净”的系统上安装应用程序,以便在发货前捕获gotchas。
    2. 我尝试使用depends.exe来跟踪我的项目所依赖的dll的版本。我把我们的代码和我找到的可再发行的代码一起发送。之后是愤怒的客户邮件等待游戏。
    3. 我确实可以访问64位计算机和32位计算机来安装新版本。它总是在那里工作。
    4. 我需要使用第三方的dll,它不能注册(这是臭虫地狱)。
    5. 我不应该使用install shield、任何其他自动安装程序或编写安装脚本。
    6. 我提供了如何安装应用程序的书面说明(解压缩,双击exe文件)。

    我受够了为这东西发火。我在想我能做什么? 我应该向我的雇主寻求什么样的支持?我该如何要求他们提供支持?

    更新:

    虚拟机被炸飞了。他们不希望我把所有的时间都花在建立和拆除客户配置上。相反,我现在正与客户一起工作,以获得基本配置,这样我就知道应该针对的确切机器设置。如果不符合规格,我就不必再在意了。至少有什么事情发生了…尽管我还是想要一台试验机。

    12 回复  |  直到 11 年前
        1
  •  25
  •   Nemanja Trifunovic    16 年前

    如果没有测试机,至少可以在安装了干净的windows的情况下使用虚拟机吗?

        2
  •  33
  •   Paul D. Waite    15 年前

    你应该辞职。在你的辞职信中,你应该解释为什么这种情况很荒谬,让你和顾客都感到沮丧。让我们回顾一下你对你的处境所说的话:

    我没有试验机。也就是说,我无法复制客户环境,也无法尝试在“干净”的系统上安装应用程序,以便在发货前捕获gotchas。

    没有专业的开发公司会在没有测试安装的情况下发布产品。我们是一家非常小的公司,我们有许多虚拟机,我们运行测试,我们运行我们的安装程序。

    我尝试使用depends.exe来跟踪我的项目所依赖的dll的版本。我把我们的代码和我找到的可再发行的代码一起发送。之后是愤怒的客户邮件等待游戏。

    我确实可以访问64位计算机和32位计算机来安装新版本。它总是在那里工作。

    这些不算太坏也不算太奇怪。奇怪的是,你不知道你在使用什么dll,但你的雇主对此无能为力,除非你在维护一个没有文档记录的遗留系统,那就是他们没有记录任何东西的错误。

    不幸的是,您已经说过这些系统不是“干净的”,所以很容易忘记成功安装产品实际上需要哪些步骤。

    我需要使用第三方的dll,它不能注册(这是臭虫地狱)。

    这种情况会发生。

    我不应该使用install shield、任何其他自动安装程序或编写安装脚本。

    我提供了如何安装应用程序的书面说明(解压缩,双击exe文件)。

    这太疯狂了。客户无法遵循基本说明。事实上,你被告知不要使用安装程序来简化客户的生活,这几乎肯定是你的问题的原因。你不知道他们做了什么。当你问他们的时候,他们会撒谎或者忘记他们做了什么……如果他们一开始就知道的话。你的雇主因为这条法令引起了严重的支持问题,情况显然永远不会改善。

    将此与第一个问题(没有足够的安装测试平台)联系起来,您的产品肯定会失败。你的顾客应该生气,你也应该生气。你的雇主所造成的情况不利于成功产品的开发。简单地说,在这些问题得到解决之前,你无能为力。

        3
  •  9
  •   Pang Ajmal PraveeN    11 年前

    我没有试验机。也就是说,我无法复制客户环境,也无法尝试在“干净”的系统上安装应用程序来捕获 装运前要先拿到货。

    这种类型的设置通常不会很好地结束。不管你有多优秀,你的开发机器和客户机器之间总会有显著的差异。首先,visual studio倾向于包含大量的运行时,这可能会使您的应用程序依赖于这些运行时而不必说任何话。建立虚拟机不是很复杂。我用 VMWare Workstation 模拟各种不同的机器。唯一的要求是您拥有要在虚拟机上安装的操作系统和程序的许可证。vmware提供了30天的免费试用期,之后我相信会有189美元。

        4
  •  8
  •   Michael Burr    16 年前

    其他人给了你一个大局性的答案;以下是一些小建议,如果你不能采取更大的行动,你可能会觉得有帮助:

    • 列出应用程序所依赖的dll。如果您不知道应用程序具体依赖于什么,如何确保依赖项可用?
    • 编写一个实用程序,搜索并记录系统上这些dll的任何实例,以及dll版本和系统路径。如果用户遇到问题,此实用程序可能会在很大程度上帮助您解决问题,因为您已经提到,您无法通过物理或网络访问显示问题的计算机。
    • 编写一个除了 LoadLibrary() 你的依赖。故障可以被记录下来,至少你有一个简单的方法来确定客户机器上的错误。

    希望,常见的问题会很快被解决,并进行修复,使它们不再是常见的问题,您将越来越不需要使用这些工具。但在你处理好这些问题之前,它们可能会有帮助。

    另外,在一条评论中你提到这个问题是由windows系统dll引起的-这些通常会在现代系统上引起很少的“dll地狱”问题,因为第三方软件(包括你的)通常无法替换这些。所有的windows系统都应该得到ms所提供的,ms在使新系统向后兼容方面非常好(尽管不一定完美)。如果这些是导致您出现问题的原因,您可能需要发布它们是哪些dll(可能是版本)的详细信息,以便人们可以回答更详细的问题,例如可能需要配置什么来确保windows安装程序安装dll。

        5
  •  7
  •   ChrisLively    16 年前

    以这种方式向老板展示:
    一台用于测试安装的机器要比一个愤怒的客户甚至是你追踪问题的时间便宜得多。

        6
  •  6
  •   erjiang    16 年前

    您的一些依赖项可以被静态链接吗?

        7
  •  5
  •   John Dibling    16 年前

    您的安装中是否包含特定的dll?

    如果是的话,这是错误的做法。相反,您应该为编译器包含ms可再发行包。例如,如果使用msvc 8.0 sp1进行编译,则会获取此包并将其与应用程序一起安装:

    Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)

    每个mscv版本(包括sp级别)都有自己的redist包。确保你为你的编译器找到了正确的一个。

    在你把火扑灭之后,和你的老板坐下来,让他们相信如果你要假装是一家软件公司,你必须表现得像一家软件公司。获得真实的生产环境。这不是一个高中编程俱乐部,而是你的生活。

    编辑:只是想说清楚。一旦你得到了redist,不要把它解压到你的机器上,然后在你的设置中包括编码的dll。相反,将整个redist安装程序作为安装的子步骤。先安装redist,然后安装代码。

        8
  •  3
  •   Seboeh    16 年前

    仅供参考:你有这个可再发行的软件包吗? http://www.microsoft.com/downloads/details.aspx?familyid=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en

    这对我有帮助。

        9
  •  2
  •   foobarfuzzbizz    16 年前

    您可以向客户请求vpn访问或类似的内容,以便使用他们的环境。

        10
  •  2
  •   bta    16 年前

    如果你通过一个完整的,绝对的路径 LoadLibrary() ,它将只在该确切位置查找dll。你也许可以用这个来解决你的一些问题。将应用程序所需的所有dll打包到一个“lib”文件夹中,并将其包含在程序的zip文件中。只要“lib”文件夹与.exe位于同一文件夹中,就可以使用 GetCurrentDirectory 构造到这些库的绝对路径,并确保加载的lib与测试软件时使用的lib相同。但是,如果您使用的库没有重新分发的权限,则此方法不是很有帮助。

        11
  •  1
  •   Daniel    16 年前

    我去看看vmware。这是一个非常酷的虚拟机,你可以模仿客户的环境。

    另外,我会和你的老板谈谈。完全有可能他们是在假设你所运送的产品已经过你的全面测试的情况下。所以这可能是一个错误的沟通,我会和他谈谈只是为了确定。如果你的老板不理解你的观点,我绝对会考虑辞职,因为一旦产品成功,他会声称他必须“和你谈谈”并“让你改过自新”。完全有可能在你的评论中,他会说你不合作或最坏。所以我最好是谈谈,然后根据你是否应该继续在公司工作的情况做出决定。

        12
  •  0
  •   Abhineet    11 年前

    您确定正在开发的Windows的版本和服务包与客户的计算机“相似”吗?如果没有,试试看。有时不同的sps是游戏的罪魁祸首。

    您可以按照所有人的建议使用vms,或者您可以使用(norton)各种版本和sps的ghost映像,但是您的企业必须再次承担机器的成本。