当前位置:  开发笔记 > 编程语言 > 正文

客户生气,对抗未知的DLL依赖

如何解决《客户生气,对抗未知的DLL依赖》经验,为你挑选了7个好方法。

我是一个为客户开发C++ Windows应用程序的人.在过去的几个月里,我们遇到了同样的问题,即客户机器上缺少DLL依赖项.尽管我付出了最大的努力,但仍然会出现问题,我们会发回电子邮件.我的老板和老板的老板对我很生气,顾客也不高兴.

我希望你们可以提供帮助,就如何按顺序获得可交付成果提出建议/想法.在一些明显的事情之前:

    我没有试机.也就是说,我不能复制客户环境,也不能尝试在"干净"的系统上安装应用程序,以便在发货前抓住陷阱.

    我已经尝试使用depends.exe来跟踪我的项目所依赖的DLL的版本.我用我可以找到的redistributables运送我们的代码.之后,这是一个愤怒的客户电子邮件等待游戏.

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

    我需要使用一个无法注册的第三方DLL(它有点像地狱一样.)

    我不应该使用Install Shield,任何其他自动安装程序,或编写安装脚本.

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

我厌倦了为这些东西加热.我错过了什么,我可以做什么?在雇主的支持方面我应该问什么?我应该如何以他们提供的方式要求提供支持?

更新:

鱼雷鱼雷.他们不希望我花费我所有的时间来设置和拆除客户配置.相反,我现在正在与客户合作以获得基本配置,以便我知道我应该针对的确切机器设置.如果不符合该规范,我不再需要关心.至少有些事情发生了......虽然我还是喜欢试机.



1> Edward Stran..:

你应该放弃.在你的戒烟信中,你应该解释为什么情况是荒谬的,并让你和顾客都感到沮丧.让我们回顾一下你所说的有关你情况的事情:

我没有试机.也就是说,我不能复制客户环境,也不能尝试在"干净"的系统上安装应用程序,以便在发货前抓住陷阱.

没有专业开发公司在没有测试安装的情 我们是一家非常小的公司,我们有许多VM,我们运行测试并运行我们的安装程序.

我已经尝试使用depends.exe来跟踪我的项目所依赖的DLL的版本.我用我可以找到的redistributables运送我们的代码.之后,这是一个愤怒的客户电子邮件等待游戏.

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

这些都不是太糟糕或太奇怪.奇怪的是你不知道你正在使用什么DLL,但除非你维护一个没有文档的遗留系统,否则你的雇主不会为此做多少 - 那么不记录任何内容就是他们的错.

不幸的是,您已经说过这些系统并不"干净",因此很容易忘记成功安装产品所需的步骤.

我需要使用一个无法注册的第三方DLL(它有点像地狱一样.)

有时候是这样的.

我不应该使用Install Shield,任何其他自动安装程序,或编写安装脚本.

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

这完全是疯了.客户无法遵循基本说明.事实上,您被告知不要使用安装程序来简化客户的生活,这几乎肯定是导致问题的原因.你不知道他们做了什么.当你问他们,他们会撒谎或忘记他们做了什么......如果他们知道开始.你的雇主已经通过这项法令引起了严重的支持问题,而且情况根本不会改善.

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


当然,"没有安装人员"的事情是最重要的一点.

2> Nemanja Trif..:

如果您没有测试机器,您是否至少可以使用具有干净Windows安装的虚拟机?


愤怒的客户与新PC(或虚拟机)的成本是多少
下载VirtualBox的免费副本并安装XP.
我建议从Oracle的VirtualBox或Microsoft的VirtualPC等免费版本开始.您只需要一个Windows许可证.
Microsoft Virtual PC是免费的

3> MatsT..:

我没有试机.也就是说,我不能复制客户环境,也不能尝试在"干净"的系统上安装应用程序,以便在发货前抓住陷阱.

这种类型的设置通常永远不会结束.无论您有多好,您的开发者机器和客户机器之间总会存在显着差异.一方面,Visual Studio往往包含大量的运行时,它可能会使您的应用程序依赖而不说任何事情.设置虚拟机并不是很复杂.我使用VMWare Workstation来模拟各种不同的机器.唯一要求是您拥有要在虚拟机上安装的操作系统和程序的许可证.VMWare提供30天免费试用,之后我相信189美元.


VMWare服务器是免费的,提供基本相同的东西.

4> Michael Burr..:

其他人给了你很大的答案; 这里有一些较小的建议,如果您无法采取更大的行动,您可能会觉得有用:

列出您的应用程序依赖的DLL.如果您不确切知道应用程序所依赖的内容,那么如何确保依赖项可用?

编写一个实用程序,搜索并记录系统上这些DLL的任何实例,以及DLL版本和系统路径.如果用户遇到问题,此实用程序可能会帮助您解决问题,因为您已经提到您没有对出现问题的计算机进行物理或网络访问.

编写一个除了LoadLibrary()依赖项之外什么都不做的实用工具.可以记录故障,至少您可以轻松确定客户机器上的错误.

希望能够迅速解决常见问题并修复问题,以便它们不再成为常见问题,并且您使用这些工具的需求也越来越少.但在你解决问题之前,他们可能会有所帮助.

此外,在一条评论中你提到问题是由Windows系统DLL引起的 - 这些应该通常会在现代系统上引起很少的"DLL地狱"问题,因为第三方软件(包括你的软件)通常无法取代这些.所有的Windows系统都应该得到MS提供的功能,而MS在使新的系统向后兼容方面相当不错(尽管不一定完美).如果这些问题导致您出现问题,您可能希望发布它们所属的DLL(以及可能的版本)的详细信息,以便人们可以使用更具体的内容进行回答,例如可能需要配置以确保Windows安装程序安装DLL.


@wheaties:如果您的应用程序和/或工具是可能在Win64计算机上运行的32位进程,您还应该注意处理(或至少要注意)SysWOW64重定向问题.

5> NotMe..:

以这种方式呈现给你的老板:
一个用于测试安装的机器比一个生气的客户甚至是你的追踪问题的时间便宜得多.



6> erjiang..:

您的某些依赖项是否可以静态链接?


如果这些DLL是Windows的一部分,它们是如何丢失的?如果它们是其他Microsoft DLL(msvcrt,mfc ......等),那么您应该静态链接它们.为您节省安装问题和版本验证.

7> John Dibling..:

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

如果是这样,这是错误的方法.相反,您应该为编译器包含MS可再发行组件包.例如,如果您使用MSVC 8.0 SP1进行编译,那么您将获得此包并使用您的应用程序进行安装:

Microsoft Visual C++ 2008 SP1可再发行组件包(x86)

每个MSCV版本(包括SP级别)都有自己的redist包.确保为编译器选择正确的版本.

放下火来之后,和你的老板坐下来说服他们,如果你打算假装成一家软件公司,你必须像一个人那样行事.获得真实的生产环境.这不是一个高中编程俱乐部,这是你的生活.

编辑:只是为了清楚.一旦你得到redist,不要将它解压缩到你的机器,然后在你的设置中包含封装的DLL.而是将整个redist安装程序包含在安装的子步骤中.首先安装redist,然后安装代码.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有